Methods and apparatus for providing improved access to applications

ABSTRACT

A data processing system includes components for providing a pleasant user experience. Those components may include a family interaction engine that provides a family channel. The family interaction engine may provide for creation of a user group. The family channel may present content of interest to multiple users in the user group. When a user is detected near the data processing system, the family interaction engine may automatically present content of interest to that user. When used for presenting media content, the data processing system may also cause supplemental data to automatically be presented, wherein the supplemental data is relevant to the media content and to a predetermined interest of the user. The data processing system may also provide a ranked list of applications for potential activation by the user. The applications may be ordered based on the current context. Other embodiments are described and claimed.

TECHNICAL FIELD

The present disclosure relates in general to data processing systems.More particularly, the present disclosure relates to technology forimproving the experience of users interacting with data processingsystems.

BACKGROUND ART

People use data processing systems for many different purposes. Sometypes of data processing systems (e.g., “smartphones”) are typicallyused by a single person. Other types of data processing systems may havemultiple users. For instance, two roommates may share a personalcomputer, or a whole family may share a tablet computer (“tablet”). Whenmultiple users share a data processing system, however, the dataprocessing system may easily get cluttered with content that interestsone of the users but not the other user or users.

A conventional data processing system may require that a different useraccount be created for each different user, and users may be required tosign in with credentials (e.g., a user identifier (“userid”) and apassword) before the data processing system will allow access to anycontent. Such a data processing system may maintain a different userprofile for each different user account. A user profile may include acollection of data items for personalizing the data processing systemfor the associated user. For instance, a user profile may include manydifferent kinds of configuration settings for the user, includingsettings that have been manually created and/or configured by the user,and settings that have been automatically created and/or configured bythe data processing system. The user profile may also identify whichcontent items are available to the user.

In one example usage scenario, a mother, Mary, acquires a conventionaltablet to be used by herself, her husband, Joe, her son, Ned, and herdaughter, Amy. Mary may intend for the tablet to be frequently used bydifferent members of the family. For instance, Mary may intend for thetablet to be used more like a television than a smartphone. However, ifMary creates a different user account for each member of the family, itmay be difficult or impossible for the users to perform some kinds ofactions with the tablet. For example, it may be difficult for one userto share content with all of the other users.

On the other hand, if Mary creates only a single user account to beshared by all four users (or if the tablet does not allow for thecreation of user accounts), the tablet is likely to get cluttered withcontent, as indicated above. It may also be difficult or impossible toprotect any of the content from any individual user or users. Inaddition, if one of the users changes the password for the shared useraccount, the other users could get locked out.

Mary might also create five different user accounts, with four of theaccounts assigned to individuals, and with one of the accounts to beshared by all four users. (E.g., Mary might create accounts with thefollowing userids: Mary, Joe, Ned, Amy, and Shared.) However, that typeof configuration could also present numerous difficulties anddisadvantages, as described in greater detail below. Furthermore, theremay be times when Mary would like to use the tablet with Ned and Amy,but not with Joe, making the shared user account an inappropriatechoice.

Another challenge associated with some multi-user and single user dataprocessing systems pertains to the large number of applications that maybe loaded into a data processing system, and the difficulty of finding ashortcut to any particular application when desired. For example, someplatforms simply list all applications in alphabetical order. Otherplatforms may provide a list of recently used applications.

Additional challenges are associated with functions like sending contentor other information from one device to another. Conventional devicesaddress some, but not all, of those challenges. For instance, aconventional smartphone allows a user to share contact information froman address book with another smartphone. Also, a conventional smartphoneallows a user to share other types of information with anothersmartphone via near field communication (NFC) technology. But with NFCtechnology, the communicating devices must be touching or very close toeach other—typically within four centimeters. Other existing methods forsharing contact information and/or other types of information areprovided by technologies such as short message service (SMS), the socialnetworking services known as “LinkedIn” and “Facebook,” devices that runon the operating system known as “Android,” the file format referred toas “vCard,” and one or more services provided over the Internet byGoogle, Inc (“Google”). For instance, Facebook and Google providecontact synchronization mechanism for mobile phones. Patent CooperationTreaty (PCT) patent application serial number PCT/US11/68068, entitled“Mobile Device Position Detection,” describes techniques fortransmitting information from a first device to a second device based onuser input related to the relative position of the first device withrespect to the second device.

BRIEF DESCRIPTION OF THE DRAWINGS

Features and advantages of the present invention will become apparentfrom the appended claims, the following detailed description of one ormore example embodiments, and the corresponding figures, in which:

FIG. 1 is a block diagram of a data processing system with a familyinteraction engine according to an example embodiment;

FIG. 2 is a block diagram of a profiles module associated with a familyinteraction engine according to an example embodiment;

FIG. 3 provides a schematic diagram depicting various content itemspresented on the display of a data processing system by a familyinteraction engine according to an example embodiment;

FIG. 4 presents a flowchart of a process for managing home screens on adata processing system according to an example embodiment;

FIG. 5 presents a flowchart of an example embodiment of a process formanaging a family user profile;

FIGS. 6-8 present a flowchart of an example embodiment of a process forfacilitating user interactions with a data processing system;

FIG. 9 is a flowchart of an example embodiment of a process forautomatically determining content to be presented;

FIG. 10 is a flowchart of an example embodiment of a process fordynamically tailoring an application for the current user;

FIG. 11 presents a flowchart of an example embodiment of a process forautomatically ranking applications for presentation; and

FIG. 12 presents an example application activation matrix.

DESCRIPTION OF THE EMBODIMENTS

If a data processing system is configured with only one user account,and that account is to be shared by multiple users, the data processingsystem may become cluttered with a collection of applications, icons,and other content that is not optimized for any particular user. Onearea where such clutter may be particularly problematic may be the mainuser interface or home screen of the data processing system. A user maytry to reduce the clutter by manually grouping some items into specificfolders or onto specific screens. However, this grouping may not beautomatic. Consequently, as new content is introduced to the dataprocessing system, the manual process of grouping content items maybecome difficult and inefficient. Furthermore, a manual grouping by oneuser may not be suitable for another user or for a group as a whole.

If a data processing system is to be used by a group, the dataprocessing system may be configured with a different user account foreach user and with a shared user account to be shared by all of theusers. Any individual logged in to the shared account may adjust theuser profile for the shared account and may attempt to manually organizethe content in a way that is pleasing to all members of the group. Forinstance, this kind of configuration may be used for a tablet to beshared by members of a family. When a user is logged in to his or herindividual user account, user interactions may cause changes to be madeto the user profile associated with that individual user account.However, a conventional tablet does not adjust a shared user profile inresponse to changes in individual user profiles. Consequently, if a userwants the changes that were made to his or her individual user profileto also be reflected in the shared profile, the user may need to log into the shared account and then repeat the user interactions which causedthe desired changes to the individual profile.

A data processing system may tailor its content according to the userprofile of the current user. For instance, a video streaming applicationmay suggest documentary videos for viewing by the current user if theuser profile for the current user indicates that the current user has apreference for videos from that genre. However, if one or moreadditional individuals want to watch a video on the data processingsystem with the current user, the data processing system may be unableto suggest content that is appropriate for all of those individuals.This may be the case even if the application has access to the userprofiles for all of the individuals that want to watch a video.

One user may want to send a message to, or otherwise share content with,any or all of the other individuals who use a shared data processingsystem. A user may share content by using an email application or asocial networking application to present other users with the content orwith a hyperlink to the content, for example. Alternatively, anotherapplication (e.g., a music player or news reader) may provide options toshare content via social networking or email applications. However,these methods may require steps that are so time consuming orinconvenient as to discourage sharing of content. For instance, before auser can use the sharing option of a music player, the user may need tosign in to a social networking application. Furthermore, sharing throughsocial networks is often done in a broadcast manner, as opposed totargeting specific individuals. Alternatively, using email or a socialnetwork to send content may require the sender to know the intendedrecipient's email address or userid on the social networkingapplication.

The present disclosure involves a group interaction engine that providesdata processing systems with improved facilities for handling userinteractions. For instance, the group interaction engine may provideimproved facilities for interactions among multiple individual users. Anexample of a data processing system that may be used by multipleindividuals is a tablet. In an example embodiment, the group interactionengine runs on a tablet to be used by multiple members of a family.Accordingly, the group interaction engine may also be referred to as afamily interaction engine.

The family interaction engine may provide for individual user accounts.The family interaction engine may also provide for a different type ofuser account, known as a collective user account. The family interactionengine may cause the collective user account to by tied or linked tospecific individual user accounts. As described in greater detail below,the collective account may be referred to as a family user account. Thefamily interaction engine may also provide for individual user profilesassociated with the individual user accounts, and for a family userprofile associated with the family user account.

When the family user account is open, the family interaction engine mayautomatically provide the tablet with a main user interface thatincludes content of interest to multiple users. For purposes of thisdisclosure, an account is considered to be open if the account is incontrol of the data processing system. For instance, when a user logs into his or her individual user account, that account becomes open.Similarly, an account that does not require logging in may be consideredopen when that account is in control. For instance, a data processingsystem may be configured to automatically boot to the family useraccount. Consequently, the data processing system could open the familyuser account without anyone logging in. Also, if an account is open, thecorresponding profile is also considered to be open.

The main user interface that includes content of interest to multipleusers may be referred to as a home screen. All of the content for thehome screen may or may not fit on the screen at once. Accordingly, thehome screen may span multiple pages. (The different pages of the homescreen may also be referred to as a first screen, a second screen, etc.)Users may move from page to page using a swipe gesture or any othersuitable technique. For purposes of this disclosure, unless explicitlyprovided otherwise, any reference to a swipe gesture should also beunderstood as covering a flick gesture, and vice versa.

The home screen for the family user and the associated features andfunctionality may be referred to as a family channel. The familyinteraction engine may enable the tablet to dynamically andautomatically present and organize content in the family channel in away that is tailored to the family as a collective. The familyinteraction engine may determine layout and content for the familychannel based at least in part on the family user profile. In addition,the family interaction engine may automatically update the family userprofile, in response to changes to, or other actions associate with, oneor more individual user profiles. For instance, the family interactionengine may update the family user profile according to an analysis thattakes into account behaviors and preferences recorded for the familyuser account, as well as behaviors and preferences for each of theindividual user profiles. Thus, the family interaction engineautomatically uses actions within individual user accounts to determinecontent for the family channel. The family interaction engine maythereby enable the tablet to dynamically display content that isappropriate for the entire family.

For purposes of this disclosure, the noun “content” refers to musicfiles, video files, picture files, icons, software applications, emailmessages, text messages, documents, spreadsheets, presentations, andother types of data that may be stored on, accessed by, and/or presentedby a data processing system.

The family interaction engine may cause the family channel to bedisplayed automatically when the family account is open. In addition, insome situations, the family interaction engine may cause the familychannel to be displayed when an individual user account is open. Forexample, if an individual user account is open, the family interactionengine may cause the family channel to be displayed when the tablet isdocked, charging, or in some other idle or passive mode (e.g., if theopen user account has not been used for a predetermined period of time).Similarly, the family interaction engine may cause the data processingsystem to display the family channel when all users are logged out. Inaddition, the family interaction engine may provide the family channelwith different kinds of content, depending on whether the family accountis open, an individual user account is open, or no user account is open.

In addition, the family interaction engine may automatically detect whenusers are in close proximity to the tablet, based on data from a cameraand/or other sensors. For example, as described in greater detail below,the tablet may include a camera, and the family interaction engine maydetermine that a user is near the tablet based on data received from thecamera. When one or more users are detected near the tablet, the familychannel may display recommendations that are tailored to the user orcombination of users that have been detected. The family interactionengine may also allow a user to manually identify one or more otherusers as interested, and in response to the addition of additionalinterested users, the family interaction engine may dynamically adjustthe recommendations so that they are appropriate for all of theinterested users.

The family interaction engine may also allow for users to instantly sendmessages directly to, or otherwise share content with, other users thatshare the tablet, including the family account. The shared content canbe viewed either on the shared tablet or on a device that belongs to theother user.

A shared tablet may frequently be handed from one user to another. Ifthe first user happens to already be logged in to the account that thesecond user intends to use, the second user may easily access thedesired content. Otherwise, with a conventional tablet, a cumbersome andinefficient process may be required to log the first user out and to logthe second user in to the desired account. By contrast, according to thepresent disclosure, the family interaction engine may automaticallydetermine which user is holding the tablet, and the family interactionengine may automatically change the user interface and the open useraccount in response to detecting that the tablet has been handed fromone user to another. More details concerning the types of operationsthat may be performed when the tablet is handed from one user to anotherare provided below, with regard to FIG. 8.

Also, when the tablet is being used to present media content, the familyinteraction engine may determine which user is currently interactingwith the tablet, and the family interaction engine may cause the tabletto display supplemental data that is relevant both to the media contentand to a predetermined interest of the current user. The familyinteraction engine may then determine that a second user is interactingwith the tablet. In response, the family interaction engine may causethe tablet to display new supplemental data that is relevant to themedia content and to a predetermined interest of the second user.

The family interaction engine may also automatically detect whether aperson is near the tablet, and when a known user is detected near thetablet, the family interaction engine may automatically select contentto be displayed on the tablet, based at least in part on the userprofile for the detected user.

The family interaction engine may also present context-aware smartshortcuts to applications. For instance, the family interaction enginemay use context data and user input to rank applications by theirprobabilities of activation, and the family interaction engine maypresent shortcuts to those applications according to their ranked orderof predicted activation.

FIG. 1 is a block diagram of an example embodiment of a data processingsystem with a group interaction engine. In the embodiment of FIG. 1, thedata processing system (DPS) 10 is a tablet that has at least onecentral processing unit (CPU) or processor 30, with random access memory(RAM) 20, read-only memory (ROM) 36, data storage 40, and a display 22responsive to the processor. The ROM may contain a basic input/outputsystem (BIOS) 96. The data storage may contain an operating system (OS)42, local content 90, and various other items. Various other components,such as motion/orientation sensors 32, a camera 34, a microphone 35, afingerprint scanner 37, input buttons or keys 38, a network port 94,etc., may also be coupled with the processor. The tablet may connect toor communicate with one or more remote data processing systems 14 viathe network port and one or more networks 12, which may include localarea networks (LANs) and/or wide area networks (WANs) (e.g., theInternet). The processor may receive information from the input keys,the display (which may be implemented as a touch screen monitor), themicrophone, the camera, the fingerprint scanner, and/or from othercomponents.

In the embodiment of FIG. 1, the group interaction engine is referred toas a family interaction engine 60, and some or all of the familyinteraction engine is stored in data storage. The family interactionengine may include a content recommendation module (CRM) 84, a contentsharing module (CSM) 85, a tablet transfer module (TTM) 86, anapplication tailoring module (ATM) 87, and an application ranking module(ARM) 88. Parts of the family interaction engine (including, withoutlimitation, a main routine, the content recommendation module, thecontent sharing module, the tablet transfer module, the applicationtailoring module, and the application ranking module) may be copied toRAM and executed by the processor. As described in greater detail below,the family interaction engine may also include a variety of tables,matrices, files, or other data structures to contain information thathelps the family interaction engine to provide a good user experience,such as a device list 91, an application activation matrix (AAM) 95, anda context application list (CAL) 97.

As suggested above, the family interaction engine may enable the owneror administrator of the tablet to create different user accounts fordifferent individual users. The accounts for individual users may bereferred to as individual user accounts. When an individual user accountis created, the family interaction engine may also automatically createa corresponding user profile, which may be referred to as an individualuser profile. A user profile may include (a) the user's logincredentials, application data, and tablet settings, (b) user dataidentifying the user's preferences, interests, content items (e.g.,media files and applications), and (c) other information pertaining tothe user. The login credentials in the individual user profile mayinclude credentials for the tablet, as well as credentials for anyapplications on the tablet requiring login credentials. Similarly, theother information pertaining to the user in the user profile may includedata for the OS on the tablet, data for applications on the tablet, anddata for remotely hosted applications, websites, or other services. Thetablet may determine how the home screen for the user should beconfigured, based on the user's profile. As shown in FIG. 1, the familyinteraction engine may store the individual user profiles 71 in aprofiles module 70. For instance, in one scenario, the tablet of FIG. 1is to be shared by the following members of a family: a mother, afather, and two children. Accordingly, in the embodiment of FIG. 1, theprofiles module contains a first user profile 72A for the mother, asecond user profile 72B for the father, as well as additional individualuser profiles (indicated by ellipses) for the two children.

The family interaction engine may also provide for a collective useraccount and a corresponding collective user profile. The familyinteraction engine may enable the owner or administrator of the tabletto create the collective user account and link that account withmultiple specific individual user accounts. When the collective useraccount is created, the family interaction engine may also automaticallycreate the corresponding collective user profile.

In some embodiments, the collective user account may be created beforeany individual user accounts, or the collective user account may becreated automatically in connection with creation of the firstindividual user account. For example, in one embodiment, the firstaccount created on the tablet may be an administrator account, and thefamily interaction engine may use that account as the initial foundationof the collective user account. Subsequently, as additional individualuser accounts are added to the tablet, the family interaction engine mayautomatically link those account to the collective account, as well. Inone embodiment, the family interaction engine automatically treats everyindividual user account as a part of the collective user account, andthe family interaction engine therefore automatically links eachindividual user account to the collective user account.

However, the family interaction engine may also provide for anindependent guest account that is not associated with the collectiveuser account. The family interaction engine may also provide for anindependent administrator account that is not linked to the collectiveuser account, and the family interaction engine may create thecollective user account in connection with creation of the secondindividual user account. The family interaction engine may also providean opt-out option that can be selected to prevent individual useraccounts from being linked to the family account. If a user opts out,that user's individual preferences will not affect the collectiveaccount.

If the operating system (OS) of the tablet supports multiple useraccounts, the family interaction engine may cooperate with the OS tocreate the individual user accounts and the collective user account. Foran embodiment where the OS does not support multiple user accounts, thefamily interaction engine more or less independently controls allaccounts except for the administrator individual user account.

As described in greater detail below, the family interaction engine mayautomatically adjust the collective user profile, based on changes toindividual user profiles or other actions associated with the individualuser profiles. For example, the family interaction engine may aggregatecertain types of information from the individual user profiles into thecollective user profile. In various embodiments, collective useraccounts may be used for families or for other types of user groups.Accordingly, a collective user account may also be referred to as agroup user account or a family user account. Likewise, a collective userprofile may be referred to as a group user profile or a family userprofile.

The embodiment of FIG. 1 involves a family of users. Accordingly, thisdisclosure typically refers to family user accounts and family userprofiles. For instance, in the embodiment of FIG. 1, the profiles moduleincludes a collective user profile referred to as a family user profile73. However, a group interaction engine may also provide the same orsimilar kinds of features for collective user accounts for other typesof user groups.

The local content may include content 92A for the first user account,content 92B for the second user account, and content 93 for the familyuser account. This content may be organized and protected according tothe corresponding user profiles.

The family interaction engine may also contain a device list 91 thatidentifies devices which belong to the members of the family that haveuser accounts on the tablet. For ease of reference, the members of thefamily that have user accounts on the tablet may be referred to as theregistered family members, the known family members, or simply thefamily members. Likewise, the devices in the list may be referred to asthe registered family devices, the known family devices, or simply thefamily devices.

FIG. 2 is a block diagram illustrating the profiles module of FIG. 1 ingreater detail. As indicated above, the profiles module may containmultiple profiles, including at least a first user profile 72A, a seconduser profile 72B, and a family user profile 73. The first user profilemay contain a variety of records for providing a user experiencetailored to the first user. Those records may include a collection ofuser settings 76A, a collection of computer learning results 77A, userpreference model (UPM) 78A, and a collection of content recommendations79A. The user settings may include, without limitation, settings thathave been manually created and/or configured by the user, and settingsthat have been automatically created and/or configured by the dataprocessing system. The computer learning results may include, withoutlimitation, data that has been stored by the family interaction engineto identify various preferences of the user, based on previousinteractions. The collection of content recommendations may identifyrecommendations obtained with help from the content recommendationmodule. The first user profile may also contain data identifying contentitems to be presented on a home screen or main user interface for thefirst user. This data may be referred to as a collection of home screenitems 74A. The first user profile may also contain data identifyingcontent items associated with the first user, such as local content 92A.When the first user account is open, the family interaction engine maydynamically and automatically present a home screen with pictures,appointments, messages, etc., that are relevant to the first user, basedat least in part on the first user's settings, UPM, recommendations, andresults learned by the tablet.

Similarly, the second user profile may contain a variety of records forproviding a user experience tailored to the second user. Those recordsmay include a collection of user settings 76B, a collection of computerlearning results 77B, a UPM 78B, and a collection of contentrecommendations 79B. The second user profile may also contain dataidentifying a collection of home screen items 74B for the second user.The second user profile may also contain data identifying content itemsassociated with the second user. When the second user account is open,the family interaction engine may dynamically and automatically presentanother home screen with pictures, appointments, messages, etc., thatare relevant to the second user, based at least in part on the seconduser's settings, UPM, recommendations, and results learned by thetablet.

Additional user accounts and profiles may be created for additionalusers (e.g., the two children). For instance, in one scenario, thefamily interaction engine will contain individual user accounts andindividual user profiles for individuals with the following names oruserids: “Mom,” “Dad,” “Jack,” and “Jill.”

Furthermore, as indicated above, the profiles module may include afamily user account and a corresponding family user profile 73. As shownin FIG. 2, the family user profile may contain records like thosedescribed above with respect to the individual user profiles, to helpprovide for a user experience tailored to the family as a collective.Those records may include a collection of user settings 76C, acollection of computer learning results 77C, a family preference model(FPM) 78C, and a collection of content recommendations 79C. The familyuser profile may also contain data identifying a collection of homescreen items 74C for the family user. For purposes of this disclosure,the term “family user” generally refers to whichever user or usersis/are interacting with the tablet while the family user account isopen. The family user profile may also contain data identifying contentitems associated with the family user, such as local content 93. Whenthe family user account is open, the family interaction engine maydynamically and automatically present another home screen with pictures,appointments, messages, etc., that are relevant to the family ingeneral, based at least in part on the family user's settings, RPM,recommendations, and results learned by the tablet.

Moreover, since the family interaction engine automatically adjusts thefamily user profile, based on changes to individual user profiles orother actions associated with the individual user profiles, the familyuser profile may include a blend of the settings, recommendations, andcomputer learning results from the profiles for the individual users. Asa result, the family user's recommended content items may be tailored tothis particular family.

In one embodiment, the home screen for the family account is one aspectof a family channel. The family channel may be controlled by the familyinteraction engine, and the family channel may serve as a launchingpoint for all members of the family. The family interaction engine mayalso display the family channel when the tablet is docked or charging,and the family channel may cycle through relevant family content basedon the family user profile. Relevant family content may include, withoutlimitation, weather reports, reports on the current location andactivity of each family member, notices of upcoming planned familyevents (potentially via a calendar), media content that may includepersonal photos or videos, favored external media, favored music, andfeeds from social networking sites of interest (e.g., status updatesfrom “friends,” text messages from individuals being “followed,” etc.).This content may also include applications commonly used under thefamily account, such as an electronic program guide (EPG), avideo-on-demand application, a social networking application, etc. Thecontent may also include news items that have been automaticallydetermined to correspond to shared interests and preferences of thefamily members. The family interaction engine may also present sharedcontent on the family channel. This shared content may include itemsthat have been shared with the family user by an individual user, suchas upcoming calendar items, school news, weather information, or otheritems. These and other kinds of items may be shared using, for example,the techniques described below.

Other embodiments may provide a group channel or a collective channelwith the same or similar features as those described herein with respectto the family channel.

The family interaction engine may also provide one or more applicationprogramming interfaces (APIs) that allow other applications on thetablet to access the family user profile and/or individual userprofiles. For instance, an API may allow an application to read andmodify the family user profile to tailor the family channel userinterface to the shared interests of the family. For example, a musicplayer application may access the profile for the currently open accountto determine which music files to recommend to the user that iscurrently signed into the tablet. If an individual user us signed in,and that user's previous behavior indicates a preference for classicalmusic, the application may recommend classical music performances.However, if the family account is open, and past behavior under thataccount indicates a preference for Broadway musicals, the applicationmay recommend Broadway musicals.

FIG. 3 provides a schematic diagram depicting various content itemspresented on the family channel on the display of the tablet by thefamily interaction engine according an example embodiment. As indicatedabove, those items may be based on an analysis of what content may berelevant to the family as a whole, with regard to the family userprofile and the individual user profiles. The content items may includevarious containers with different kinds of content. For instance, FIG. 3shows ten containers or objects, including a menu bar 910, a user menu912, a weather panel 914, a calendar panel 916, a received content panel918, a shopping panel 920, a picture panel 922, a social networkingpanel 924, a recommended content panel 926, and a search panel 928.

The menu bar includes buttons or other selectable objects for launchingspecific applications or functions, such as a calendar application, asocial networking application, a music player, etc. The user menudisplays which user account is currently open, and provides a drop downlist of user accounts which may be selected to open a different account.For instance, the user menu may display thumbnail pictures or icons foreach individual family member. Selecting one of the family members fromthe menu causes the family interaction engine to open that person'sindividual user account. Alternatively, the family interaction enginemay use biometric forms of identification (e.g., face recognition,fingerprint scanning, voice identification, etc.) to automaticallydetermine who is currently holding the tablet, and the familyinteraction engine may then automatically select or highlight thethumbnail in the user menu for that person.

The weather panel displays weather information for the current location.The calendar panel displays information about upcoming appointmentsscheduled for the family account. The received content panel providesinformation about, and a link to, a content item that has been sharedwith the family account from one of the individual user accounts. Forpurposes of this disclosure, a link may be a hyperlink, a shortcut, orany other object or item that, when selected, activates or opens theassociated content item. The shopping panel displays information aboutgoods or services predicted to be of interest to one or more of theindividual users, or information from an application or service that hasbeen configured to send shopping information to the tablet. The picturepanel displays a picture predicted to be appealing to the family as awhole. The social networking panel displays information from a socialnetworking application. For instance, the family interaction engine mayautomatically detect postings that are relevant to two or more of theindividual users, and the family interaction engine may automaticallydisplay those posts in the social networking panel. The recommendedcontent panel displays information about content predicted to be ofinterest to the family as a whole. The search panel provides an inputfield for entering search terms. The family interaction engine may usethe family channel as a home screen.

In different embodiments or scenarios, the family interaction engine mayomit any of the containers described above. The family interactionengine may also include one or more versions of any of those containers,with some versions based on the family profile and other versions basedon individual user profiles. The family interaction engine may alsopopulate the family channel with different containers.

The family interaction engine may determine the types of containers tobe used for the family channel, and the types of content to be includedin each container, based at least in part on the family user profile.Any of the users may manually change the corresponding settings for thefamily channel in the family user profile. For instance, containers inthe family channel may have controls for hiding and displaying eachcontainer, and individual users may use those controls to manually hideor display containers. The family interaction engine may also provide an“Add Container” user interface control that allows Individual users toadd new containers to the family channel.

In addition, the family interaction engine may automatically adjust somesettings for the family channel, based on actions within the familyaccount and within the individual user accounts. For example, the familyinteraction engine may automatically sense the presence of individualusers (e.g., using voice identification or face recognition), and thefamily interaction engine may automatically show or hide containers,based on the preferences of those detected users. Also, any feedbackprovided by the users (e.g., selecting a “like” or “dislike” button, a“dismiss” button, etc.) may impact the future content of the familyinteraction engine.

Furthermore, the family interaction engine may change the appearance,format, and content of the family channel, based on whether (a) thefamily user is logged in or (b) an individual user is logged in, but thetablet is in an idle, inactive, or passive mode. For instance, when thefamily user is open, the family channel may use tiles or othercontainers to show content that entices the user to click on a link formore information, but when the tablet is idle, the family channel mayremove one or more of those containers and may instead show summarizedinformation followed by a detailed story, which may appear in adifferent section or be scrolled within a container. In other words, thefamily channel may show less content that is designed for activeengagement and more content that is designed for passive consumption(e.g., like a television program or a news reader). A container designedfor passive consumption may enable users to get the latest updates onimportant topics, without the need to actively engage or interact withthe tablet. The family channel may shift to a preferred modality whenthe tablet is idle. For instance, the family channel may be configuredto use audio feeds as the preferred method for providing informationwhen the tablet is in ambient mode. Consequently, when the tablettransitions to ambient mode, the family channel may replace a widgetthat provides textual information with a widget that provides audibleinformation.

The family interaction engine may make similar adaptions based on otherattributes of the user (or users) near the tablet. For instance, a userprofile may indicate that text feeds are the preferred method forproviding information when the user is sitting in front of the tablet,video feeds are the preferred method when the user is standing near thetablet; and audio feeds are the preferred method when the user is movingaround. If the family interaction engine detects that the user issitting in front of the tablet, the family interaction engine may funnelcontent to the family channel via a widget that presents text. In onescenario, the user may be interested primarily in news, and the familyinteraction engine may present news headlines in the widget. If thefamily interaction engine detects that the user is standing near thetablet without changing location (e.g., while folding clothes), thefamily interaction engine may funnel content to the family channel via awidget that presents video. If the family interaction engine detectsthat the user is wandering around the house, the family interactionengine may funnel content to the family channel via a widget that playsaudio. In each case, the family interaction engine may first tailor thecontent, and then, once the content is determined, the familyinteraction engine may determine the method for delivering the content,based on user preferences, user activity, and the person or people nearthe tablet. For instance, the family channel could automatically changefrom displaying a textual news story about a particularly event, topresenting a video news report on that same event, to presenting anaudio report of that same event, as the user changes his or heractivity.

Furthermore, if multiple people are near the tablet, the familyinteraction engine may use any suitable approach to automaticallycustomize or blend the type of content to be delivered and the deliverymechanisms to suit those people and the activities those people areconcurrently involved in.

As described in greater detail above and below, the family interactionengine may provide a variety of features which help to keep the familychannel and the home screens for the individual user accounts frombecoming disorganized and cluttered due to the choices, preferences andactions of other users. As common interests and relevant content areidentified, these are presented appropriately via the appropriatecontainers in the family channel. So if multiple family users areinterested in knowing results from the Olympics or knowing when peopleare expected to be home, the family interaction engine may bring suchinformation to the surface through the family channel. However, if onlyone specific user is interested in the details of world cup soccer orthe intimate details of his calendar, such information may be presentedon the home screen of the individual user's account but not on the homescreen for the other users' accounts, and not on the family channel.Thus, the family channel may facilitate an immediately useful andrelevant interaction without any lag related to signing in to a specificaccount. And if a user desires a higher degree of individually tailoredcontent, the user may sign in to his or her personal account.

For purposes of this disclosure, to “sign in” or “log in” to a useraccount generally means to provide user input that causes the tablet toopen that account. For instance, if the tablet has just booted, thetablet may present a welcome screen containing selectable identifiersfor each of the registered users. The current user may then select theidentifier for the desired user account. If the selected account is notprotected, the tablet may immediately open that account. If the selectedaccount is protected, the tablet may prompt the current user forcredentials (e.g., a userid, a password, biometric input such as afingerprint or iris scan, and/or other input to show that the user iswho he or she claims to be). If the current user supplies to propercredentials, the tablet may then open the selected account.

In some case, however, the tablet can provide for automatically signingin. For instance, in one scenario, the family account is not protected,all of the individual user accounts are protected, and the tablet isconfigured to automatically open or “sign in to” the family account uponbootup. In other scenarios, all, some, or none of the accounts may beprotected or unprotected, and the tablet may automatically sign in to aprotected individual user account in response to detecting that thecorresponding user is utilizing the tablet, as described in greaterdetail below.

In one embodiment, the family interaction engine recognizes andautomatically launches the correct profile, based on (a) the user orusers in the room and (b) the known interest of that user or thoseusers. For example, if Dad always uses the family profile and the tabletrecognizes Dad's face, then the tablet may automatically startup to thefamily profile. In addition, the family interaction engine may customizethe startup behavior based on learning over time or based on statedpreferences of the users.

The family interaction engine may also tailor the content of the familychannel in response to detecting people other than the registers users(“visitors”) near the tablet. For instance, the family interactionengine may prevent the family channel from presenting personal familyinformation if any people without individual user accounts are detectednear the laptop.

FIG. 4 presents a flowchart of a process for automatically managing homescreens in an example embodiment involving the tablet of FIG. 1. Theillustrated process may start after the tablet has been booted to an OS.Then, as shown at block 210, the data processing system mayautomatically launch the family interaction engine (FIE). The familyinteraction engine may then open the family user account, as indicatedat block 212. As depicted in block 214, the family interaction enginemay then determine the current context for the tablet, as shown at block214. Aspects of the current context that the family interaction enginemay consider when determining what to include on the family channel mayinclude the current time (including the current date) and the currentlocation of the tablet. For instance, the family user profile and/or theindividual user profiles may include data that identifies which usersare likely to be using the tablet in family mode for a certain period oftime during the day (e.g., mom at home with kids from 3:00 PM to 5:00PM), and based on that data, the family interaction engine mayautomatically replace a container that shows financial news with acontainer that displays homework information from a school websiteduring that time period. The current location may include many differentaspects of location. For instance, the family interaction engine maydetermine general location attributes (e.g., whether the tablet islocated at home, in the office, on the road, etc., as well as morespecific location attributes (e.g., within the home, whether the tabletis located in the living room, the kitchen, the bedroom, etc.).

Other aspects of the current context that the family interaction enginemay consider when determining what to include on the family channel mayinclude, without limitation, scheduled events associated with one ormore of the family members. For instance, the family interaction enginemay recognize such events based on data from the family calendar, fromindividual user calendars, from events described in a social networkingapplication, etc. Other aspects may include the activities that thecurrent user is currently involved in (e.g., watching TV, listening tomusic, etc.), how noisy it is at the location of the laptop, whether anypeople are detected near the tablet, whether any registered users aredetected near the tablet, what is playing on the television, theweather, unusual changes to routines associated with any of the familymembers (e.g., detecting that Dad is stuck in traffic when normally hewould already be home), etc.

The family interaction engine may then determine which containers todisplay on the family user home screen, and which content items toinclude in those containers, as shown at block 216. These determinationsmay be based on the data in the family user profile, as well as onaspects of the current context for the tablet such as those mentionedabove. Once the content is determined, the family interaction engine maydisplay that content on the family user channel, for instance as one ormore home screens, as shown at block 218.

As depicted in block 220, the tablet may then determine whether anindividual user has signed in. If an individual user does not sign in,the process may return to block 214, with the family interaction enginedetermining the current context and adjusting the content to be includedon the family channel in response to a significant change in context, asshown at blocks 214, 216, and 218.

If an individual user has signed in, the family interaction engine mayclose the family user account, as indicated at block 222, and open theindividual user's account, as shown at block 224. The family interactionengine may then determine the current context and what content to showon the individual user's home screen, as depicted at blocks 225 and 226.The family interaction engine may display that content on the individualuser's home screen, as indicated at block 228.

As shown at block 230, the family interaction engine may then facilitateinteraction by the individual user, as described in greater detail belowwith regard to FIGS. 6-8. In addition, as the individual user interactswith the tablet, the family interaction engine may update the individualuser's profile accordingly, as depicted at block 232. For example, ifthe individual user pulls up a first article about politics and a secondarticle about travel, the family interaction engine may update the userprofile to record that the user is interested in politics and travel.The updated user profile may then influence future content items andcontent recommendations for the individual user, as well as the contentfor the family user channel.

As shown at block 240, the family interaction engine then determineswhether the individual user is signing out. If the individual user doesnot sign out, the process may return to block 225, with the familyinteraction engine determining the current context and determining thecontent to display on the individual user's home screen, etc., asindicated above. If the individual user signs out, however, the familyinteraction engine may update the family user profile based on theactions of the user in the individual user account, as indicatedgenerally at block 242, and as described in greater detail below withregard to FIG. 5. The family interaction engine may then close theindividual user account and open the family user account, as shown atblocks 244 and 212. The process may then repeat the operations describedabove, as appropriate.

Thus, the family interaction engine automatically learns familypreferences and behaviors and self-configures to optimize use for thefamily as a whole. The family interaction engine may dynamicallyconfigure the family user profile and the family channel. The familyuser profile may serve as an anchor point on a multi-user, multi-profilefamily tablet. As described in greater detail below with respect to FIG.5, the family user profile may allow the family interaction engine toidentify recommended content and applications based on aggregating thepreference models from all user profiles on the tablet.

FIG. 5 presents a flowchart for an example embodiment of a process formodifying a family user profile. As mentioned above with regard to block242 of FIG. 4, the family interaction engine may use the process formodifying the family user profile may in response to an individual usersigning out of his or her individual user account. As shown at block 250of FIG. 5, when a user logs out of an individual account, the familyinteraction engine may respond by determining whether the user profilefor that user changed while the user was logged in. If the use profilewas changed, the family interaction engine may modify the family userprofile accordingly. For instance, the individual user's profile mayinclude the individual user's settings; a preference model for the user;lists of favorite songs, websites, etc. for the user; and other types ofdata, including without limitation data reflecting various differentinterests of the user. The preference model may include manual settingsspecified by the user, as well as settings based on the user's responsesto recommendations made by the content recommendation engine. Inaddition or alternatively, the family interaction engine mayautomatically update the individual user profile, in response todetecting a new usage pattern, based on user actions showing that aprevious interest (e.g., in movies) has been superseded by a newinterest (e.g., in music). If there were changes to the part of the userprofile that identifies the preferences and interests of the user, or toother parts of the user profile, the family interaction engine may makethe same or similar kinds of changes to the family user profile, asshown at block 252.

Block 254 shows the family interaction engine determining whether a userhas specifically requested a change to the family user profile, forinstance via a profile settings function made available by the familyinteraction engine when the family user account is open. If a user hasrequested a change to the family user profile, the family interactionengine may record that change to the family user profile, as shown atblock 256.

Block 260 shows the family interaction engine determining whether a newusage pattern has been detected for the family user. If the familyinteraction engine has detected a new usage pattern for the family user,the family interaction engine may adjust the family user profileaccordingly, as shown at block 262. For instance, if the familyinteraction engine determines, based on an analysis of user interactionswith content items presented on the family channel, that the family userhas a strong interest in national news items, and little or no interestin the local weather forecast, the family interaction engine may adjustthe family user profile to cause the weather panel in the family channelto be replaced with a national news panel.

Block 270 shows the family interaction engine determining whether thefamily user has designated any items of content as a new favorite. Ifso, the family interaction engine may update the family user profile toidentify the new favorite item or items, as shown at block 272.

Block 280 shows the family interaction engine determining whether thecontent recommendation module has presented any new contentrecommendations to the family user. If the content recommendation modulehas presented new content recommendations, the family interaction enginemay modify the family user profile to include those recommendations, asindicated at block 282. The process of FIG. 5 may then end.

FIGS. 6 through 8 present a flowchart of an example embodiment of aprocess for facilitating user interaction using the tablet of FIG. 1. Inparticular, FIG. 6 illustrates operations associated with the contentsharing module, FIG. 7 illustrates operations associated with thecontent recommendation module, and FIG. 8 illustrates operationsassociated with the tablet transfer module.

The process of FIG. 6 involves features which make it simple for usersto leave messages and reminders for other users, and to share contentwith other users, including the family user. The process of FIG. 6 maybegin with a user already signed into the tablet under either anindividual user account or under the family user account. As shown atblock 310, the family interaction engine may then determine whether theuser has requested content interaction. In one embodiment, the user mayrequest content interaction by clicking a piece of content on the homescreen and dragging the content towards the top of the display.

If the family interaction engine determines that the user is requestingcontent interaction, the family interaction engine may launch thecontent sharing module. Alternatively, the tablet may automaticallylaunch the content sharing module when the tablet boots up or whenever auser logs in to an account, and then the content sharing module maydetermine whether the user is requesting content interaction. As shownat block 312, after the content sharing module has been launched, andpossibly in response to a request for content interaction, the contentsharing module may automatically detect whether any other registereddevices are located within a predetermined range of the tablet. Thecontent sharing module may create or update a device list to identifythe detected devices. In addition or alternatively, the familyinteraction engine may periodically monitor for registered deviceswithin range of the tablet, and the family interaction engine may updatethe device list dynamically. The content sharing module may then use thedevice list to determine which devices should be presented as potentialrecipient devices.

As depicted at block 314, the content sharing module may then presentthe user with options for sharing content. For example, the familyinteraction engine may display identifiers for various potentialrecipients, such as a list of known users and a list of detecteddevices. For purposes of this disclosure, an identifier may be a textualname or other textual term; an image, icon, or other graphicalrepresentation; or any suitable combination of text and graphics. Forinstance, the content sharing module may present the detected devices asdevice names, as device and/or user images, or as a combination ofdevice names and device/user images. The list of known users may includeall of the registered family members. For instance, in one scenario, thelist of known users may include the names or individual userids “Mom,”“Dad,” “Jack,” and “Jill.” The content sharing module may presentidentifiers for each of the known users. The list of detected devicesmay include all of the family devices detected in block 312 and/orlisted in the device list.

The content sharing module may determine which users own which devicesbased on the user profiles. For instance, a specific device (or multiplespecific devices) can be linked to a specific user account when thatuser account is created or modified on the tablet. In addition, multipledevices may run the family interaction engine, the same family membersmay be registered as users on those devices, and the resulting userprofiles may also identify which users own which devices. The familyinteraction engines on those devices may interact together using anysuitable approach.

In one embodiment, if the user drags a piece of content towards the topof the display, the content sharing module may cause a horizontal bar topop up across the top of the display. That bar may be referred to as thesharing bar. The content sharing module may display, within the sharingbar, identifiers for each known user and each detected device.

Alternatively, the user can share content on the home screen byselecting a “Share” button and then specifying whom the content shouldbe shared with. In addition, applications may provide input objects (orother mechanisms) which allow users to invoke sharing options of thecontent sharing module. For instance, a web browser application thatdisplays content may also provide a menu option in the application'suser interface for sharing selected content with other users on thetablet (or with the family account). When the user selects that sharingoption, the content sharing module may present a sharing bar (or otherinterface for selecting recipients) as described above.

After presenting potential recipients to the user, the content sharingmodule may then determine whether the user has selected a recipient. Forinstance, as shown at block 320, the content sharing module maydetermine whether the user has selected the family account as therecipient. The user may select the family account as the recipient bydropping the content on an area of the screen associated with the familychannel. For example, if the user drags content over the sharing bar andthen hovers or lingers there for an extended period of time (e.g., onesecond), the content sharing module may create a larger window thatshows the family channel (or the family channel may fill the screen). Inother words, the content sharing module may cause the bar to extend toreveal the family home screen. The user may then drop the content ontothe family home screen. Alternatively, to select a recipient, the usermay simply click on the identifier for that recipient.

If the family user account has been selected, the content sharing modulemay modify the family user profile accordingly, as indicated at block322. For instance, the content sharing module may modify the family userprofile in a way that causes the family interaction engine to presentthe shared content on the family channel when the family channel issubsequently displayed (e.g., when the family account is open). Thefamily interaction engine may display the shared content in a widget orother container on the home screen that is designed to present contentthat has been shared with the family account. Thus, by selecting thefamily account as the recipient, the user makes the content accessiblefor all family members to view in the tablet's ambient mode.

Thus, the content sharing module may provide a simple method for a userto instantly share content with others tablet users in a family. Userscan share any type of content with the family account, including withoutlimitation messages and calendar reminders. For instance, if Mom istraveling for work, she can record a funny video message for Jack andJill on her smartphone and then share the video message from hersmartphone to the family channel, for Jack and Jill to see when they gethome from school. (Additional information about a family channel servicethat provides for this kind of sharing is provided below in connectionwith FIG. 9.) And if Jack needs a ride home from band practice onMonday, he can create a calendar reminder to that effect on the tabletunder his individual user account, and then share that reminder to thefamily channel. Anyone viewing the family channel could then see thatreminder. Likewise, Dad can share reminders about chores for the kids,etc.

However, referring again to block 320, if the family account is notselected, the content sharing module may then determine whether anindividual user account has been selected, as depicted at block 330. Theuser may select a user account by dropping the content on the identifierassociated with that account in the sharing bar or by selecting thecontent and then selecting the identifier for that account, forinstance. When an individual user account has been selected, the contentsharing module may modify the user profile for the selected accountaccordingly, as shown at block 332. For instance, the content sharingmodule may modify the user profile in a way that causes the familyinteraction engine to present the shared content on the home screen ofthe selected user when the selected user logs in. The family interactionengine may display the shared content in a container that is designed topresent content that has been shared with the user, for example. Inaddition or alternatively, the family interaction engine may display theshared content on the family channel screen if the selected user isdetected near the tablet, as described below. Like with the familychannel, users may share any type of content with other individualusers.

However, referring again to block 330, if the content sharing moduledetermines that an individual user account has not been selected, thecontent sharing module may then determine whether a particular devicehas been selected, as indicated at block 340. The user may select adevice by dropping the content on an identifier or image associated withthat device. In one embodiment, the content sharing module initiallypresents only the list of family members, but then if the user drags thecontent to an individual user identifier and then hovers there for anextended period of time (e.g., one second), the content sharing moduleexpands a drop down menu that lists the devices belonging to theselected user. The sharing user may then drop the content onto one ofthose listed devices. Alternatively, to select a device, the user maysimply click on the identifier for that device.

In addition, after detecting other devices, the content sharing modulemay determine where those devices are located, relative to the tablet.Additional details concerning features for detecting the relativepositions of mobile devices may be found below in Appendix A: MobileDevice Position Detection.

The content recommendation module may also enable the user to sendcontent to another device that is near the tablet by simply flicking thecontent in the direction of the other device. The content sharing modulemay provide this functionality without expanding the content into anapplication and without displaying the sharing bar. If an icon or otheridentifier for a particular content item is displayed on the homescreen, the user may simply flick that icon towards the target device.The content sharing module may then automatically determine whether theuser has flicked the identifier for the selected piece of contenttowards one of the other devices. In response to determining that theuser has flicked the content towards one of the other devices, thecontent sharing module may automatically send the selected piece ofcontent to that device. In addition, the tablet and the other devicesmay be configurable, with regard to how received content is to bepresented. For instance, the user of a device may save a configurationsetting that selects among multiple content display options for thedevice. The content display options may include without limitation afirst option to configure the device to automatically display receivedcontent and a second option to configure the device to automaticallydisplay a notification that content has been received.

Referring again to block 340, if a device has been selected, the contentsharing module may instantly send the shared content to that device, asdepicted at block 342. Users may share any type of content with devices.The content sharing module may then remove the sharing bar, and theprocess may then end. Alternatively, the content sharing module may keepthe sharing bar displayed, the process may return to block 320, and theuser may share the content with additional users and devices.

As indicated above, the content sharing module may also enable users toshare content from within an application, while logged in to anindividual user account or while logged in to the family user account.For instance, the home screen may include a video player application.When the user selects a specific piece of content (e.g., a specificvideo file), the video player application may expand to display thecontent, along with an option (e.g., a menu button labeled “Share” orany other suitable input object or mechanism) for the user to activatesharing functionality. Consequently, while the user is using the videoplayer application to watch the video on the tablet, he or she mayselect the share option. When the user selects the share option, thecontent sharing module may bring up the sharing bar, and the user mayselect another user or device as the recipient, as described above. Thecontent sharing module may then update the user profile for the selectedrecipient user and/or transmit the content to the selected device, asdescribed above. The same kinds of options and operations may beprovided by other types of applications. For instance, if the user isviewing a picture in a social networking application, the socialnetworking application may provide a sharing option, and the contentsharing module may bring up the sharing bar in response to userselection of that sharing option.

In one embodiment, to provide for sharing from within an application,the application provides one or more APIs or hooks that are exposed tothe content sharing module. Such hooks may be published to provide fordata exchange and personalization. The content sharing module mayprovide some or all of the user interface features that facilitate thesharing between devices and people. The content sharing module may alsoprovide the mechanisms for transferring the data between users and/orbetween devices. Once content has been transferred, the content sharingmodule may then hand off the shared content to the application throughthe API, and the application may be responsible for presenting thatcontent. Such an API may include fields to identify the user to receivethe content, to identify the device to receive the content, to identifyor include the content being shared, etc. The data field for the contentmay be application dependent, and the application may send whatever itneeds to be able to retrieve on the other side. In one scenario, thefamily channel home screen is an application that uses the same kind ofAPI to transfer content more or less like any other application. Inaddition, applications may use predefined data types to facilitatesharing between different applications. For example, one type of webbrowser on the tablet could share a hyperlink with a smartphone thatuses a different type of web browser, and the shared link may easily beused by the web browser on the smartphone because the data type iscomprehended by both browser-type applications.

In addition, the home screen of any device or user account to whichcontent has been shared may be automatically updated and dynamicallyrefreshed to show any new content that has been shared with that deviceor account user.

The address book may also allow each user to flag individuals and groupsthat are listed in the address book (“contacts”) for inclusion in thesharing bar. Subsequently, whenever a user brings up the sharing bar,the content sharing module may also display identifiers for each ofthose flagged contacts as potential recipients. Alternatively, thecontent sharing module may include a configuration setting that allowsthe user to specify that all of the contacts in the user's address bookare to be shown in the sharing bar.

The content sharing module may thus make it easy for users to sharecontent. By contrast, with a conventional tablet, a user might need toexecute numerous inconvenient actions in order to share content.Conventional techniques for sharing content include embedding thecontent within or attaching it to an email message; transferring thecontent via a flash drive; and copying the content to a file server orto a website that provides similar services.

However, referring back to block 310, if content interaction has notbeen requested, the process may pass through page connector A to FIG. 7.

People use tablets and other data processing systems extensively forcontent and media consumption, including reading online news, browsingcontent from the World Wide Web, watching online television (TV) andmovies, etc. Recommendation systems help people to find content that mayinterest them. A conventional recommendation system may focus on servingindividual users (e.g., as part of an application or service thatprovides videos on demand). Accordingly, the recommendation system maygenerate recommendations for a particular user or account based on thepreferences specified by the individual owner of that account.

However, a tablet (or other data processing system) may be shared bymultiple members of the same group, such as a household or family, andthe family may use that tablet in a social setting (e.g., with the wholefamily together in the same room for family night). When arecommendation system based on single users is used in a group setting,the system may be incapable of generating and providing suggestions thatare relevant or well suited to the entire group. Instead, therecommendations may be well suited only to the specific individual whois logged in to the tablet.

FIG. 7 shows an example process to enable a tablet to generate andprovide recommendations that are well suited to an entire group ofindividuals. A content recommendation module executing on the tablet mayperform some or all of this process. For instance, the tablet may launchthe content recommendation module automatically for each user wheneverthat user logs in. The family interaction engine may use the contentrecommendation module when determining content for the family channeland when determining content for each individual user's home screen. Asindicated above with regard to the recommended content panel, the homescreen may include a container for presenting content recommendations,based on the user profile for the current user. In particular, thecontent recommendation module may present recommendations based on apreference model for the current user. The preference models for theusers may be stored in the respective user profiles, or in any othersuitable location. Alternatively, the family interaction engine maylaunch the content recommendation module in response to a determinationthat recommendation services are needed. For instance, the familyinteraction engine may determine that recommendation services are neededin response to the current user selecting an option to launch thecontent recommendation module. Alternatively, the family interactionengine may determine that recommendation services are needed in responseto the user launching a different application that providesrecommendation services, such as a music player, a video player, a mediaprogram guide, a content provision service, etc.

FIG. 7 may begin with the content recommendation module determiningwhether recommendation services are currently needed, as shown in block410. Alternatively, the family interaction engine may determine whetherrecommendation services are needed, and launch the contentrecommendation module as necessary. The content recommendation modulemay then generate and present recommendations for the current user, asdescribed above and shown at block 412. The content recommendationmodule may then determine whether the user has selected a feature oroption for editing the members of the group for whom recommendations areto be generated (the “recommendation group” or “user group”), as shownat block 414. By default, the recommendation group may include only thecurrent user. In response to the user selecting an option to edit therecommendation group, the content recommendation module may providesimple and intuitive features that allow the user to dynamically addusers to and remove users from the recommendation group at any time.

As shown at block 414, if a function for editing the recommendationgroup has been selected, the content recommendation module may presentoptions for changing the recommendation group. For example, the contentrecommendation module may display a list of all known tablet users,including the family user, for potential inclusion in the recommendationgroup. The content recommendation module may present users as names,userids, images (e.g., thumbnails), or any suitable combination these orother identifiers. Then, if one or more family members are alsointerested in the content recommendations, the current user may selectthose users by touching, clicking, or otherwise selecting theiridentifiers in the displayed list. In response to a user being selected,the content recommendation module may add the selected user to therecommendation group.

For instance, Dad may initially be using the tablet by himself, loggedin to his own account, and the home screen may automatically presentrecommendations based only on Dad's preferences. Jill may then sit downnext to Dad, and Dad may use the edit function to add Jill to therecommendation group. Consequently, the home screen may automaticallypresent recommendations based on the preferences of Dad and Jill,combined.

Similarly, users can be deleted from the recommendation group eithermanually or automatically, in response to detecting that the particularuser is no longer present in front of or next to the tablet, forinstance. Manual options for deleting a user from the recommendationgroup may include a “Remove” button associated with that user in theuser interface. The person holding the laptop may also remove a user bydragging or swiping that user's thumbnail out of the recommendationgroup in the user interface.

The content recommendation module may then determine whether therecommendation group has been changed, as indicated at block 420. If therecommendation group has changed, the content recommendation module maygenerate and present new content recommendations, based at least in parton the profiles of the users in the recommendation group, as shown atblocks 422 and 424. For example, the content recommendation module maydetermine that a particular G-rated movie is of potential interest toall of the identified users, and the content recommendation module mayupdate a container in the family channel to recommend that movie. Theprocess may then return to block 416, and the user may make additionalchanges to the recommendation group, as described above.

In addition or alternatively, the content recommendation module maycooperate with another local or remote application to produce contentrecommendations for a group of users and to provide for editing thatrecommendation group. For example, the content recommendation module maysend, to an application that supplies movies on demand, data to identifythe users in the recommendation group, or to identify the preferences ofthose users. The movies-on-demand application may then use that data todetermine content recommendations, and the movies-on-demand applicationmay then send those recommendations to the content recommendationmodule. The content recommendation module may then present therecommendations from the movies-on-demand application on the tablet.Alternatively, the movies-on-demand application may use the techniquesdescribed above to provide the options for editing the recommendationgroup.

However, referring again to block 420, if the current user has notmanually changed the recommendation group (but has instead canceled theoptions for manually changing the recommendation group, for instance),the process may pass to block 430, and the content recommendation modulemay then determine whether the current user (or a previous user) hasselected or turned on automatic detection. Alternatively, the contentrecommendation module may turn on automatic detection by default. Ifautomatic detection is not turned on, the content recommendation modulemay terminate and pass control back to the family interaction engine,and the process of FIG. 7 may end.

If automatic detection is turned on, the content recommendation modulemay automatically determine whether any users other than the currentuser are present, as indicated at block 440. For example, the contentrecommendation module may utilize sensing technology (including withoutlimitation speaker identification based on audio received by themicrophone and/or face recognition based on video received by thecamera) to automatically identify users near the data processing system.If the content recommendation module detects another user, the contentrecommendation module may automatically add the detected user to therecommendation group and then generate and present new recommendedcontent, based at least in part on the profiles of the users that havebeen detected, as shown at blocks 442 and 444. In addition, the contentrecommendation module may display thumbnails or other identifiers forthe known users, and when a user is detected, the content recommendationmodule may highlight that thumbnail for that user. If the contentrecommendation module does not detect another user, the process maycontinue to loop through blocks 440 and 430 until another user isdetected, automatic detection is turned off, or the contentrecommendation module is terminated. Alternatively, the process mayreturn to block 414, with the content recommendation module providingoptions for manually editing the recommendation group, as indicatedabove.

As has been described, the content recommendation module allows thecurrent user to easily change the recommendation group. A family that isusing the tablet together may use the functions of the contentrecommendation module to find content they are all interested in. Thecontent recommendation module may enable users to easily control theprocess by which the tablet recommends content for multiple people. Thesimple and intuitive user interface (UI) of the content recommendationmodule may greatly increase the likelihood that group recommendationfunctionality will be utilized.

However, referring again to block 410, if recommendation services arenot needed, the process may pass through page connector B to FIG. 8.

FIG. 8 pertains to a tablet transfer module that automaticallydetermines whether the tablet has been handed off or transferred fromone user to another, and that, in response to a hand off, provides aconvenient interface for changing which user account is open. Asdescribed in greater detail below, the application tailoring module mayuse gesture identification and automatic user identification to enable afirst user to share the tablet with a second user while maintainingcontrol over the personalized experience for the first and second users.

The process of FIG. 8 may begin with the tablet transfer module or thefamily interaction engine automatically determining whether the tablethas been handed off or transferred from one user to another, as shown inblock 510. The act of handing off the tablet may be considered a handoffgesture. The tablet may determine that it has been transferred to a newuser in response to a combination of events detected by variouscomponents of the tablet, such as the motion/orientation sensors and thetouch screen display. For instance, the tablet may detect that, after aperiod of interaction by logged in user A, touch interaction is nolonger detected by the capacitive sensor, or the touch information isstatic (e.g., the user is holding the device as commonly happens inconnection with a handoff); then a movement captured by theaccelerometer is detected, and another touch “static” interaction isdetected (e.g., the new user takes the tablet in his or her hand). Or ahandoff could be simply detected by identifying a different user lookingat the camera. And the facial recognition feature may be furtheroptimized by only triggering camera capture when some activity isdetected from the accelerometer. However, an actual handoff need not bedetected accurately by the accelerometer when handoff detection isaugmented with facial recognition. However, if the family interactionengine detects that the tablet has not been actively used for apredetermined amount of time before the tablet is grabbed by the seconduser, the family interaction engine may determine that no transfer hasbeen detected, and the family interaction engine may automaticallytransition to family mode.

Also, if no transfer has been detected, the process of FIG. 8 may end.But if a transfer has been detected, the family interaction engine maylaunch the tablet transfer module, and the tablet transfer module mayautomatically determine the identity of the new user, as depicted atblock 512. Alternatively, the tablet may automatically launch the tablettransfer module whenever the tablet boots up or whenever a user logs in,and the tablet transfer module may determine whether determine whether atransfer has transpired. The tablet transfer module may use sensingtechnologies like those described above with regard to the contentrecommendation module (e.g., face and/or voice recognition) to identifythe new user. For purposes of FIG. 8, the user who was originallyholding the tablet is referred to as the first user, and the user towhom the tablet has been handed is referred to as the second user. Asdescribed in greater detail below, the tablet transfer module may thendetermine what type of user account changes should be applied, if any,based on user input received after the tablet has been transferred. Forinstance, as described below, the tablet transfer module may provide fora complete transfer or transition, a temporary transition, a sharedtransition, and no transition.

In one embodiment, in response to detecting a physical transfer of thetablet, the tablet transfer module may automatically present anidentifier for the first user and an identifier for the second user onthe display of the tablet, as indicated at block 514. The useridentifiers may be in the form of thumbnail images, userids, names, orany other suitable identifier. As shown at block 520, the tablettransfer module may then determine whether user input has been receivedto request a complete transition, according to which the first user isto be removed or signed out and replaced with a new current user. Acomplete transition may be requested if the first user is finished withthe tablet and does not plan to use it again soon, for instance. Theinput for a complete transition may constitute a swipe gesture in whichthe first user's thumbnail image (or other identifier) is dragged orswiped off the screen, to indicate that the first user should beremoved.

As depicted at blocks 524 and 526, if it is determined that a completetransition has been requested, the tablet transfer module mayautomatically sign out the first user and automatically sign in thesecond user, or prompt the second user to sign in. To automatically signthe second user in, the tablet transfer module may use face recognitionwith the tablet camera to automatically authenticate the second user.This automatic sign in process may be more or less invisible to theusers. In addition, if the face recognition fails, the tablet mayautomatically fall back to the family mode for privacy reasons (e.g., toensure the safety of the data of the user who just handed off thedevice).

Once the second user is signed in (or once the family account isopened), the process may then pass to block 542, which illustrates thetablet transfer module removing the remaining thumbnail (in this case,for the second user) from the screen. The process of FIG. 8 may thenend, with the second user (or the family user) signed in and using thetablet as desired.

However, referring again to block 520, if a complete transition was notrequested, the tablet transfer module may then determine whether arequest has been received for no transition (i.e., to leave the firstuser signed in), as indicated at block 530. No transition may berequested if the first user is not finished with the tablet and expectsthe second user to return the tablet soon, for instance. The user inputto request no transition may constitute a swipe gesture in which thesecond user's thumbnail image is swiped off the screen. If the tablettransfer module receives input requesting no transition, the process maypass from block 530 to block 542, and the tablet transfer module mayremove the remaining thumbnail (in this case, for the first user) fromthe screen. The process of FIG. 8 may then end, with the second userholding the tablet but the first user still signed in.

However, referring again to block 530, if the option for no transitionwas not requested, the tablet transfer module may then determine whethera request has been received for a shared transition (i.e., for atransition to a session that takes into account the user profiles forboth users). A shared transition may be desired if the first user andthe second user plan to use the tablet to obtain recommendations forcontent predicted to be of interest to both the first and second user,so the first and second users might enjoy that content together, forinstance. In one embodiment, as shown at blocks 540 and 550, the tablettransfer module may determine that a shared transition has beenrequested if one of the users has selected or touched the thumbnail forthe second user without dragging that thumbnail to the center of thescreen. In response to such input, the tablet transfer module may createa recommendation group that includes both the first and second users, asshown at block 552. The content recommendation module may then makerecommendations based on the profiles of both users, as described abovewith regard to FIG. 7. The tablet transfer module may then remove thethumbnails or identifiers from the screen, as shown at block 542. Theprocess of FIG. 8 may then end, with the second user holding the tabletand the shared account signed in.

However, referring again to block 550, if the thumbnail for the seconduser was centered, the tablet transfer module may implement a temporarytransition in which the second user's account is temporarily opened, asshown at block 554. A temporary transition may be desired when the firstuser intends to grant temporary access to the second user, to allow thesecond user to share content with, or send content to, the first user,for example. The user identifiers may then be removed from the screen,as indicated at block 542, and the process of FIG. 8 may then end.However, when the second user hands the tablet back to the first user,the tablet transfer module may automatically close or log out the seconduser, and then re-open or log in the first user.

In another scenario, the first user hands the tablet to a second userwho intends to use the same application, but with the contextualcustomization of the application dependent on the person holding thetablet. For instance, Mom and Dad may be sitting together on the couchwatching the Olympics, and Dad may open an ACME Olympics Applicationthat works collaboratively with what is showing on a television channel.While Dad holds the tablet he receives statistical information about thecompetitors (e.g., what are the world record times, who is expected towin, what are the competitors best times, etc.). When Dad hands thetablet to Mom, the ACME Olympics Application continues to run, but itchanges the nature of what is being presented. For instance, for Mom itpresents a list of interesting facts about the venue (e.g., when it wasbuilt, what other events it has been used for, which celebrities arecurrently at this forum, which company supplies the uniforms, what arethe uniforms made from, a link to purchase similar product, etc.). Inthis case, the first user was not logged out, and the running appcontinued to run, but the customization within the application was basedon the user who held the tablet.

However, referring again to block 540, if the thumbnail for the seconduser is not selected within a predetermined, configurable period oftime, the tablet transfer module may remove the user identifiers fromthe screen, as indicated at block 542, and the tablet transfer modulemay apply a default transition mode. In the embodiment of FIG. 8, thedefault transition mode is no transition. The process of FIG. 8 may thenend.

FIG. 9 presents a flowchart of an example embodiment of a process forautomatically determining content to be presented in a family channel.As described in greater detail below, in that process, the familyinteraction engine may dynamically modify the contents of the familychannel (e.g., which containers and which content items are displayed onthe family channel), in response to many different factors, includingwithout limitation predefined favorites and other preferences andsettings (e.g., calendar entries) for the family user account;predefined favorites and other preferences and settings for individualuser accounts; computer learning results for the family user account andthe individual user accounts, based on previous interactions under thefamily user account and under the individual user accounts; andattributes of the current context, such as the current time and date,the application currently in use, which known users (if any) are nearthe tablet, etc. For purposes of this disclosure, the data aboutpreferences and behaviors that the family interaction engine uses todetermine family channel content may be referred to as the preferenceand usage data. Similarly, the data about the current context that thefamily interaction engine uses to determine family channel content maybe referred to as context data. For instance, as indicated below, thefamily interaction engine may use the preference and usage data and thecontext data to dynamically generate and/or update a family preferencemodel, and the family interaction engine may use the family preferencemodel to determine family channel content.

Thus, the family preference model constitutes an aggregate ofcharacteristics and preferences for the family user profile, along withresults from analyzing preferences, preference models, and behaviorsacross all individual user profiles. The family interaction engine mayobserve, learn, and adjust the family preference model over time, basedon an ongoing analysis of behavior, including usage of one or morecontent recommendation systems.

By analyzing factors such as those referenced above, the familyinteraction engine may automatically identify information andapplications that are likely to be of interest to the family members.Consequently, the family interaction engine may automatically populatethe family channel with different information and different applicationsin different contexts, so that the information and applicationspresented at any particular time or in any particular situation are morelikely to be of interest to the family members at that time or in thatsituation.

The process of FIG. 9 may be performed by the tablet of FIG. 1, and thatprocess may begin, for example, when the tablet launches the familyinteraction engine, as shown at block 610. As shown at block 612, thefamily interaction engine may then consult the family user profile toobtain preference and usage data that may help the family interactionengine to determine which types of content and which specific contentitems might be most suitable for presentation on the family channel. Forinstance, the preference and usage data from the family user profile mayidentify favored or commonly used content sources, favored or commonlyused applications, favored or commonly used content categories orgenres, favored or commonly used content items, and so forth. As shownat block 614, the family interaction engine may also consult theindividual user profiles to obtain any or all of the same kinds ofpreference and usage data for each of the individual users. As indicatedat block 616, the family interaction engine may also obtain preferenceand usage data by consulting one or more digital personas, which may becreated and/or maintained by one or more local or remote digital personaservices. A digital persona is a digital representation of importantattributes and characteristics of a person. This digital representationmay include data that has been volunteered, observed, and inferred abouta person. Volunteered information includes information such aspreferences, favorites, likes, factual information (credit card numbers,address, product preferences, etc.), and any other explicit informationwhich a user has specifically shared. Observed information includescontext-based information about a person that has been electronicallysensed, observed, or captured (e.g., biometric data, sensedgeo-location, purchase behavior, etc.). Inferred information is theresult of analytics applied to volunteered and observed data. Inferredinformation can also be derived by analyzing and/or combiningdemographic information (e.g., where someone lives, income levels, etc.)and/or other types of information from one or more third-party datasources.

The digital persona service(s) may provide data defining digitalpersonas for any or all of the registered users.

In one embodiment, the types of information that the family interactionengine extracts from the profiles and/or the digital personas includewithout limitation

-   -   favorite item data (e.g., data that identifies specific        websites, songs, videos, or other content items as having been        selected by an individual user or the family user as favored);    -   favorite genre or category data (e.g., data that identifies        different genres or categories of websites, songs, videos, news        topics, or other content classes as having been selected by an        individual user or the family user as favored);    -   favorite application data (e.g., data that identifies specific        applications as having been selected by an individual user or        the family user as favored); and    -   other types of favored items, such as a favorite sports team.        The extracted data may also include preferred item data,        preferred category data, preferred application data, and other        types of data identifying preferences that have been        automatically detected by the family interaction engine, based        on usage patterns of individual users and usage patterns under        the family user account.

As shown at block 618, the family interaction engine may then aggregateand analyze the data about preferences and behaviors from the collectivefamily user profile, the individual user profiles, and the digitalpersonas to create the family preference model.

For purposes of this disclosure, when reference is made to a userprofile, it should be understood that a digital persona, a contextframework, and other similar types of data stores may be used instead ofthe user profile, or in addition to the user profile, unless clearlyindicated to the contrary, either by the context or explicitly.

In one embodiment, the family preference model includes data thatspecifies or identifies observed preferences, observed behaviors, andexpressed interests of each individual user, as well as data thatspecifies or identifies observed preferences, observed behaviors, andexpressed interests for the collective family user account.

As depicted at block 620, the family interaction engine may alsodetermine the current context for the tablet. For example, the familyinteraction engine may determine the time of day, the location, and thetype of activity, if any, that one or more users may be using the tabletfor. As described herein, another context attribute that the familyinteraction engine may detect is the identity of any family memberscurrently in proximity to the tablet. Additional context attributes aredescribed herein. The family interaction engine may save the informationabout the current context, and that information may be referred to ascontext data.

As indicated at block 622, the family interaction engine may alsoconsult the recommendations generated by the content recommendationmodule. For instance, the family interaction engine may notify thecontent recommendation module as to the identity of any user in thevicinity of the tablet, and may request content recommendations tailoredto that user or group of users.

The family interaction engine may then determine the types ofcontainers, the types of content, and the specific content items to bepresented on the family channel, based on the various different datasources referenced above, as shown at block 624. And the familyinteraction engine may display that content on the family channel, asindicated at block 626.

In one embodiment, the family interaction engine determines the contentto be displayed on the family channel by assigning different weightingfactors to different individual user profiles, based on which users arepresent. For instance, the family interaction engine may create orupdate the family preference model to favor content for the presentusers, based on the different weighting factors. For example, if Dad andJill are interested in sports or particular sports teams, and Jack isnot interested in sports, the family preference model may cause thefamily channel to display more sports-related containers and/or contentwhen only Dad and Jill are present than when only Dad and Jack arepresent. And, as indicated below, the family interaction engine maydetermine content to be displayed based on which specific group of usersis present.

As depicted at block 630, the family interaction engine may thendetermine (or re-determine) whether any people can be detected in closeproximity to the tablet. If any people are detected, the familyinteraction engine may automatically determine whether those people areregistered users, as indicated at block 632. The family interactionengine may use any suitable sensing technologies (e.g., face and/orvoice recognition) to detect and identify people. As indicated above,the family interaction engine may also determine whether any previouslydetected users are no longer present. The family interaction engine maythen adjust the context data to identify the present user or users, asshown at block 634. Thus, the group present becomes a context element.

In addition, the family interaction engine may update the individualuser profiles and/or the family user profile to identify behaviors andinterests associated with different groups within the family. Thecontent recommendation module may also record and use this kind ofinformation. For example, if Dad and Jill typically watch certain showstogether or do certain activities together, then the family interactionengine and the content recommendation module may automaticallyprioritize those shows or activities in response to detecting that Dadand Jill are present. However, when Jack is also present, the group maytend to watch a different show. Accordingly, the family interactionengine and the content recommendation module may prioritize that show inresponse to detecting that Dad, Jill, and Jack are present. Thus, thefamily interaction engine may observe the family behavior andsubsequently use those observations to provide an experience that iscustomized for different groups within the family.

Once the context has been adjusted according to the currentcircumstances, the tablet may then consult the content recommendationmodule to get content recommendations for the current user or group ofusers, as depicted at block 636.

Once the new content recommendations have been received, or if no peoplewere detected at block 630, the family interaction engine may thendetermine whether the context has changed, as indicated at block 640. Ifthe context has changed, the family interaction engine may adjust orupdate the context data, as shown at block 642.

In addition, if a user interacts with the tablet, those interactions mayaffect the content of the family channel. For instance, if a user underthe family account loads a new picture onto the tablet, the familyinteraction engine may decide to add that picture to the family channel.Accordingly, after the family interaction engine updates the contextdata or determines that the context has not changed, the familyinteraction engine may detect whether a user is interacting with thetablet, as depicted at block 650. If a user is interacting with thetablet, the family interaction engine may update the family user profileand the family preference model, as indicated at blocks 652 and 654(e.g., to identify the new picture as a favored or preferred item).

The process may then return to block 624, with the family interactionengine re-determining family channel content. The process of FIG. 9 maycontinue operating, with the family interaction engine dynamicallyupdating the family channel in response to changing conditions.

Thus, the family interaction engine may dynamically modify the contentof the family channel to provide content predicted to be most compellingto the family as a whole. In one embodiment, the family channel is afluid UI of onscreen containers or container areas. Each container mayrun a different application, widget, newsfeed, or other service,depending on the context, the preferences of the users in the room, andthe user interests. The shape and form of the UI may change ininteresting ways, augmenting or removing containers, depending on thepreferences of the users.

The contents of the containers may be selected to (a) match knownpreferences and favorites for a single user (e.g., a stock ticker forparticular favored or preferred stocks, a particular favored orpreferred media object or genre, a particular favored or preferrednewsfeed), and/or (b) to have broader, group-based appeal (e.g., itemsfrom a family calendar, favored or preferred family media items orgenres, location/status updates of other family members from socialnetworking applications, health updates for extended family/friends viasites such as the one at www[dot]CaringBridge[dot]org, updates from aschool website, updates from teachers, notes from one family member tothe rest of the family, favored or preferred entertainment applications(e.g., an application for playing movies on demand), etc.

The family interaction engine may determine what content to display onthe family channel based on a combination of both individual andaggregate family-favored content sources, applications, content items,and other information. The family interaction engine may use multipledata sources to determine the type of information that would interestthe family. Data sources may include, without limitation, the familyuser profile; individual user profiles; user/family specified favorites;preferences based on observed behavior while using the tablet; and anintegration of individual user favorites, preferences, and interestsretrieved from a digital persona service.

In particular, the family interaction engine may determine which typesof content and which specific content items to include on the familychannel based on the current context and the saved user profiles. Forexample, if no one is detected in close proximity, the familyinteraction engine may automatically dim or turn off the screen, or thefamily interaction engine may display content that is relevant to allmembers of the family, such as news that matches the interests of allfamily members or upcoming calendar events for all members of thefamily. Furthermore, the family interaction engine may automaticallytune the family channel content to individuals detected in closeproximity. For instance, if Mom is the only user detected near thetablet, the family interaction engine may tune the content to berelevant to Mom, such as categories of videos that Mom likes, socialnetworking updates for Mom, indications of unread email or messagesreceived by Mom, and upcoming calendar events for Mom. Or, as indicatedabove, if Dad, Jill, and Jack are in the room, the family interactionengine may display information about shows or activities of interest tothat specific group of users.

The family interaction engine may recognize users in the room through acombination of methods, and may then dynamically configure the familychannel, to tailor both the type of containers (e.g., applications,widgets, feeds) as well as the type of content that would be preferred(e.g., type of application, type of feed, etc.). The family interactionengine may determine the area, shape, and display properties for eachcontainer from a pallet of options, and may then use those containers todisplay content on the screen. The family interaction engine may alsorefresh and change the content as new and relevant information becomesavailable for display. The family interaction engine may also providesettings that can be modified by users to control characteristics of thedisplay (e.g., to set timing and transition effects).

The family interaction engine may automatically present the familychannel when the tablet is at rest (e.g., when docked or charging whileone or more members of the family are present). In addition oralternatively, a user may manually invoke or launch the family channel,for instance by selecting an application, a system widget, a menu item,or any other suitable trigger mechanism.

As indicated above, FIG. 3 depicts an example screen shot showing oneexample of the kinds of blended family content which the familyinteraction engine may display on the tablet. In one embodiment, theinformation and media rotate through at periodic intervals until thetablet meets sleep state criteria or until active engagement by aperson. One of the containers (e.g., picture panel 922) may operatesimilarly to computer screen saver or an electronic picture frame,cycling through a set of pictures. However, other containers includeother kinds of information, with the family channel including anamalgamation of content expected to be of broad interest to members ofthe family, based on stated preferences from individual user profilesand from the family user profile, relevant situational context, observedusage behavior for individual accounts and for the family user account,etc. For instance, the family interaction engine may dynamicallyconfigure the family channel to present news, applications, video andaudio media items, photographs, calendar items, and other types ofcontent that has broad interest to family members. Furthermore, inaddition to changing specific content items, the family interactionengine automatically changes containers and general content categoriesor genres displayed on the family channel. Consequently, the blendedcontent may be unique and compelling to each family, and the familychannel may serve as a window into the family's interests.

In addition, the family channel may serve as a conduit to display familyinformation. A service could collect information from and distributeinformation to all devices owned by family members. For instance, if Momand Dad each own a smartphone, Mom and Dad may load a family interactionapplication (e.g., the family interaction engine) onto those phones andthen use those phones to subscribe to a family channel service. In oneembodiment, the family channel service is hosted by one or more remotedevices, and the tablet (and/or other individual local devices) can beused to configure the service. The family channel service could thenreceive information from and provide information to the family channelapplication on each phone. For example, as described in greater detailbelow, local and remote devices may cooperate according to the computingmodel referred to in general as “the cloud.”

In one embodiment, the family channel service ensures that theinformation provided to each device is contextually relevant for thatdevice. For instance, the family channel service may adapt the contentand information for the smaller sized screen of the smartphone, and thefamily channel service may limit and prioritize the information so thata smaller number of content items that match that user's preferences andinterests are displayed. The family channel service may also considerthe current location and activity of the user when deciding whatinformation and content to provide (including different types of newsitems, videos, music, and applications). Additionally, the familychannel service may relay the user's current location and activity tothe tablet, so a user of the tablet can know where the smartphone useris and what he or she is doing.

Thus, family information could be distributed widely to all familymembers via their devices. For instance, if Mom updates her status in asocial networking application, the family channel service mightautomatically add a container for the social networking application tothe family channel for all subscribed devices, and then populate thatcontainer with Mom's status information.

FIG. 10 presents a flowchart of an example embodiment of a process fordynamically tailoring an application for the current user. As indicatedbelow, the tablet may dynamically tailor a running application for eachuniquely recognized user, as they are recognized. In the illustratedembodiment, as depicted at block 710, the process may begin when thetablet launches an application. For purposes of illustration, theprocess of FIG. 10 is discussed primarily with regard to anentertainment or media application, such as a music player, a videoplayer, a news reader, or an e-book reader. However, other types ofapplications may be used in other embodiments, including withoutlimitation social networking applications, streaming or on-demand videoservices, Internet radio stations or other streaming music services,etc.

As indicated at block 712, the application tailoring module may then useany suitable technique to automatically identify the current user. Forinstance, the application tailoring module may use voice recognitionand/or face recognition to determine which user is currently using thetablet, as indicated above.

In an example scenario, Mom and Dad, while sitting on a couch in theliving room, are using the tablet to control a video player applicationon the tablet. In particular, the video player application has beenconfigured to cooperate or integrate with a separate home theater systemin the living room. Alternatively, applications may be configured tocooperate or integrate with other external or remote device, includingwithout limitation external media devices, such as televisions, videogame consoles, streaming video players, audio receivers, etc. In anotherscenario, applications may be configured to present both media andsupplemental data on the tablet. In the example scenario, Mom has usedthe video player application to cause a selected program to be presentedby a separate home theater system in the living room. Then, Mom and Dadmay pass the tablet back and forth while watching that program (e.g.,the Olympics).

When Mom first picks up the tablet to turn on the Olympics, theapplication tailoring module may use the tablet's camera toautomatically detect that Mom is the current user. The tablet may alsoautomatically login the current user, if necessary, as described abovewith regard to hand offs.

As shown at blocks 714 and 716, the application tailoring module maythen consult the user profile for the current user, to identify anypreferences for the current user that are relevant to the application.As indicated above, the application tailoring module may obtain the userpreferences from the user profile and/or from a digital persona. Inaddition or alternatively, the application tailoring module may obtainthe user preferences from a context framework. In addition, when theapplication tailoring module saves state data for a user as indicatedbelow, the application tailoring module may save that state data to thecontext framework. The context framework may be implemented using anysuitable system for storing data. The application tailoring module maycommunicate and cooperate with the context framework service via an API.This API may enable developers to leverage user information to buildmore feature rich applications.

In one scenario, the user profile for Mom indicates that, when watchinga sports program, Mom is generally interested in—and likes the tablet topresent—certain kinds of supplemental data pertaining to the program.For instance, Mom's profile may indicate that Mom likes to see dataabout the venue for the event, the historic significance of the venue,which celebrities are attending the event, and which company created theathletic uniforms. Mom's profile may also identify user preferences thatare relevant to specific applications. For instance, Mom's profile mayidentify preferred settings (e.g., level of difficulty, controllersettings, etc.) for different game applications. Game controllersettings may also be considered user interface settings. Mom's profilemay also identify preferred user interface settings or other applicationsettings for other applications. For example, Mom's profile may specifya default folder for storing or retrieving data for a word processingapplication, a default home page for a web browser application, etc.Mom's profile may also identify preferences with regard to mediaapplications. For example, Mom's profile may identify favorite moviesand/or type of movies for a video service application, favorite songs ortypes of songs for a music streaming service, etc.

As shown at block 718, the application tailoring module may alsodetermine the current context, including without limitation the locationof the tablet, which users are near the tablet, the type of activity inprocess, the genre of any media being presented, and other details aboutmedia being presented, such as the identity of any participants in themedia (e.g., sports teams, actors, etc.).

In the example scenario, the context may indicate that the user is alonewatching a sporting event (e.g., the Olympics) on a television at homein the living room. The application tailoring module may then tailor theapplication for the current user and the current context, based on thedata from the user profile and the current context data, as indicated atblock 722. For instance, in the example scenario, the applicationtailoring module may determine appropriate supplemental content, basedon the context, etc., and the application tailoring module may cause thevideo player application to display that supplemental content (e.g.,data pertaining to the Olympic venue, etc.) Thus, the tablet may presentinteresting trivia relevant to whatever is being shown on thetelevision, based on the known interests of the current user. Also, theapplication tailoring module and/or the video player application may beconfigured to cause the supplemental data to be presented on the tablet,on the home theater system, or both. Similarly, in a scenario involvinga game application, the application tailoring module may automaticallyconfigure game difficulty, game controller settings, and/or otherpreferences for the game for the current user.

Moreover, the family interaction engine may automatically update a userprofile and/or the digital persona associated with a particular user,based on observed behavior of that user. For example, the familyinteraction engine may detect, based on observed activity of a user,that the user tends to view (a) content items involving world news,business news, and stock prices in the morning; (b) current socialnetwork postings around lunchtime; and (c) entertainment-based contentor sports recaps in the evening. Consequently, the application tailoringmodule may benefit from this kind of automatic learning, with theability to automatically tailor applications automatically improvingover time.

As shown at block 730, the application tailoring module may thendetermine whether the tablet has been transferred or handed off to adifferent user. If no transfer is detected, the application tailoringmodule may determine whether the context has changed, as shown at block740. For instance, the application tailoring module may determine thatthe broadcast has shifted to a different venue (e.g., from a mountainfor a ski race to an ice rink for a skating contest) or that the userhas selected a different program altogether (e.g., a western movie).Other kinds of context changes may include (a) moving from one room inthe house to another (e.g., from the living room to the kitchen), withrecommended content changing from TV/entertainment to recipes), (b)other people coming into proximity of the tablet, (c) the time of daychanging, or (d) moving to a different location altogether (e.g., fromthe house to the car). For example, the user profile may indicate thatthe user is interested in one kind of content in the morning (e.g.,financial news) and then a different kind of content in the evening(e.g., sports or comedies). If the context has changed, the process mayreturn to block 722, and the application tailoring module mayautomatically adjust the tailoring parameters according to the newcontext. For instance, if Mom has changed the channel from the Olympicsto a western movie, the application tailoring module may configure thevideo player application to display supplemental data that providesinformation about the actors in the movie, based on user profile dataindicating that Mom is interested in that kind of information.

However, referring again to block 730, if a transfer to a new user isdetected, whoever was just using the tablet may then be considered theprevious user, and the new user may be considered the current user. Asshown at block 732, the application tailoring module may then cause thetablet to save state data for the previous user. The state data that issaved may include a copy of the existing “state” of the tablet (possiblythe same as or similar to the data saved when a laptop goes to sleep),the list of applications and services in use and their associateddata/settings, the GUI artifacts that were being displayed, anenumeration or history of the actions that last occurred on the tablet,the position of open media files (e.g., movies, songs) etc. This wouldallow for the re-enablement of existing state either on the same device,or potentially on other devices with compatible capabilities. If thecurrent user (or “second user”) subsequently hands the tablet back tothe previous user (or “first user”), the application tailoring modulemay retrieve the saved state data for the first user and reconfigure thetablet back to the state that existed before the first user handed thetablet to the second user. For example, after the second user hands thetablet back to the first user, the process may return to block 712, andwhen the application tailoring module recognizes that the first user isnow the current user, the application tailoring module may retrieve thestate data that was saved for the first user. In some cases, after thetablet has been transferred, the tablet may be unable to determine whothe new “current” user is. Such a handoff may be referred to as anincomplete or unsuccessful handoff. After an incomplete handoff, if thetablet is handed back to the first user, the tablet may automaticallyre-authenticate the first user and may then restore the state for thefirst user, as indicated above, without saving any state for theunidentified second user.

However, referring again to block 732, in conjunction with saving statefor an identified previous user, the family interaction engine may alsoupdate the profile for the previous user, based on the recentinteractions, as shown at block 734. For instance, if the behavior ofthe previous user included numerous interactions with supplemental datapertaining to ice skating, the family interaction engine may update theuser profile of the previous user to identify ice skating as an interestof the previous user. The process may then return to block 712, and theapplication tailoring module may identify the current user and consultthe user profile for that individual, etc., as indicated above.

For example, the application tailoring module may determine that Dad isnow the current user, and the application tailoring module may determinethat Dad is interested in sports statistics and that he is generallyinterested in athletes from the United State. And the context data mayindicate that the user is watching the Olympics on a television at home.After aggregating all of these facts and preferences together, thetablet may determine that the user would appreciate sports statisticsfor the athletes from the U.S., and may display that type ofsupplemental content to the user. The augmented information now shown onthe tablet is based on Dad's interests for the very same event, usingthe very same application. For instance, new data and diagrams couldmelt or flow into the video player application frame and provideaugmented data to delight Dad. In other words, the application tailoringmodule may reconfigure the video player application without disengagingor starting the video player application. The application tailoringmodule may cause the video player application to incorporate thesupplemental data for the new user into the flow of the currentlyrunning application.

In another scenario, Mom and Dad may be passing the tablet back andforth while using a social networking application. When Mom is holdingthe tablet, posts and updates from her friends and social network aredisplayed. However, when Mom gives the tablet to Dad, the socialnetworking application instantly refreshes to show Dad's recentpostings, his friends, and their updates. Also, their user profiles mayindicate that Mom prefers the social networking application to sortstatus updates based on importance and Dad prefers the social networkingapplication to sort status updates based on time. Accordingly, when Momis holding the tablet, the application tailoring module may configurethe social networking application to show the most important statusupdates at the top. And when Dad is holding the tablet, the applicationtailoring module may configure the social networking application to showthe most recent status updates at the top.

In another scenario, Mom and Dad may be passing the tablet back andforth while using a word processing application. Also, their userprofiles may indicate that Mom uses one default folder and Dad uses adifferent default folder. Accordingly, when Mom is holding the tablet,the application tailoring module may cause the word processingapplication to use Mom's default folder. And when Dad is holding thetablet, the application tailoring module may cause the word processingapplication to use Dad's default folder.

Other potential scenarios include (a) a news aggregator application, andthe user profiles may indicate that Dad prefers sports news and scoresfrom local teams, while Mom prefers design and architecture news, andJill prefers entertainment/celebrity news; (b) a streaming music player,and the user profiles may indicate that Dad prefers classical, Momprefers jazz, and Jack prefers pop; (c) a computer game thatautomatically loads levels, saved games, and player attributes for thecurrent user; etc.

A tablet, smartphone, or other data processing system may have hundredsof applications installed on the platform. To navigate and get to aspecific application that a user needs while on-the-go becomesincreasingly time consuming. Shortcuts or links to launch applicationsmay be organized by categories in a hierarchy or alphabetically orderedin a flat structure. In a convention data processing system, theorganization is fixed and does not change according to the dynamiccontext of the platform.

FIG. 11 describes an example embodiment of a process for providingimproved access to applications. That process may provide easy access toa user's favorite and most useful applications and content at the righttime and location based on user habit and dynamic context.

The flowchart of FIG. 11 illustrates an example embodiment of a processfor automatically ranking applications for presentation. That processmay begin with an individual user signed in to the tablet. As shown atblock 810, the tablet may store preferences for the current user. Forexample, application ranking module may provide an interface for theuser to pre-populate the application activation matrix (described below)with information about the applications that the user utilizes mostfrequently in different situations. That interface may also allow theuser to specify different contexts that are important or relevant forone or more applications, such as an at home context, an at workcontext, a commuting context, a traveling context, an at a café context,etc. Accordingly, the user may also store data that identifies a musicplayer application as a preferred application whenever the user iscommuting to and from work, for example. Thus, the applicationactivation matrix may be initialized by the user with default values.For instance, the application ranking module may use this data from theuser to create a default application activation matrix. Subsequently, asdescribed in greater detail below, the application ranking module mayautomatically adjust the application activation matrix in response toobserved usage patterns of the user. In one embodiment, the applicationranking module uses a separate application monitoring process (AMP) totrack application usage and device context, and to continuously maintainand update the application activation matrix. The AMP may run in thebackground of the tablet and provide information on what applicationsare running, for how long, what content has been played, and so forth.The application ranking module may then use this information to updatethe application activation matrix to correlate the device usage with thecurrent user profile and the current general context. Thus, the AMPprovides basic information pertaining to the applications being used,and the application ranking module uses that information to maintain theapplication activation matrix and the probability transition matrix.

In another scenario, the user may be logged in to the family useraccount, and the user may then set parameters for that account. Theapplication ranking module may maintain separate data for each differentuser. For instance, the application ranking module may build apersonalized application activation matrix for each user, and may refinethe application activation matrix over time to support easy access toeach user's favorite and most useful applications and content at theright time and location.

The application ranking module may support such functionality byautomatically learning users' preferences through monitoring andbuilding a probability transition matrix between applications that iscontext dependent. The probability transition matrix may be referred toas an application activation matrix. The application ranking module maymonitor and track aspects of context including without limitationsemantic location, time of day, activity (e.g., driving, dining, etc.).For purposes of this disclosure, the term “semantic location” denotesthe location of the tablet and the user, as relevant to the activity ofthe user. For instance, the application activation matrix may identifythe semantic location as in the living room, in the kitchen, at home, atthe office, at the gym, at the grocery store, at a bookshop, at thelibrary, at school, at a café, at an airport, at a bus stop, commutingon a train, commuting in a car, etc.

In one scenario, the application activation matrix may indicate that, ifthe tablet is being used at an airport, there is a high probability thatthe user will want to launch a travel application from a home screen.The application activation matrix may also indicate that, while the useris browsing within the travel application, if the time is close to mealtime, the probability of jumping to a food recommendation application ishigh. And the application ranking module may determine that, if the timeis close to the user's flight boarding time, the shortcut to put thedevice into “airplane mode” should be on the top of the applicationlist. Another example is for the application ranking module to bring adata usage application to the top when the user is browsing the web orstreaming video through a third generation or fourth generation (3G/4G)connection, so the user can easily monitor his or her data usage, toavoid exceeding data plan limits. Accordingly, the application rankingmodule may present a tailored list of applications that includes onlythe applications with a relatively high likelihood of being desired, inranked order of predicted activation.

In addition, the application ranking module may associate the currenttime with calendar events and may rank applications based on suchassociations. Such calendar events may include events such as birthdaycelebrations, wedding anniversaries, flight boarding times, etc. Inparticular, the application ranking module may use the calendar data tointerpret the “time” context that is stored in the applicationactivation matrix for calendar events. For example, the applicationranking module may cross reference the current time with the third rowin the application activation matrix of FIG. 12 to determine that it isboarding time for a scheduled flight, and that the airplane mode widgetis the top ranked application in that context.

FIG. 12 presents an example application activation matrix (AAM) 95 whichidentifies the transition probability from a currently runningapplication to the next application, constrained by the current context(including semantic location, time of day, and user activity).Contextual attributes may also be identified as a wildcard (e.g.,“Any”), meaning the specific transition probability is unconstrained bythe corresponding contextual attribute. Each row in the table can beseen as a filtering rule to limit the potential applications that shouldbe retained for a context application list (CAL) 97. A smart shortcutmanager iterates through the table and applies each rule against thecurrent detected context. The smart shortcut manager may also bereferred to as an application ranking module. The application rankingmodule may store rules that match the current context in the contextapplication list. At the end of the iterating process, only a handful ofrules may be found in the context application list. The applicationranking module may then rank the rules in the context application listaccording to the transition probability value. The application rankingmodule may then determine which applications are identified by thoserules as most likely to be used next, and the application ranking modulemay present the user with selectable identifiers for one or more ofthose top-ranked applications, in rank order, thereby allowing the userto easily launch any of those presented applications. Thus, applicationswith higher transition probabilities that match the current context willbe placed higher on the context application list, giving the user easieraccess to these applications at the moment. The context application listmay also be referred to as a ranked application list.

In the embodiment of FIG. 12, the first and second rows indicate that,if the user is driving, the probability that the user will want tolaunch or use a map application is fairly high (70%), and theprobability that the user will want to use an email application is low(10%). The third row indicates that if the application ranking moduledetermines that the user is about to board a plane (based on the userbeing in an airport and the current time being near the scheduledboarding time, as reflected in calendar data for the user), there is ahigh probability (97%) that the user will want to access a widget forplacing the tablet in airplane mode. The remaining rows associatetransition probabilities for potential “next” applications with othersemantic locations, times, activities, and “current” applications.

In one embodiment, the application ranking module enables the user toassociate different times or time periods with corresponding high-levelsemantic meanings that are personalized to the user. The applicationranking module may also automatically link high-level semantics meaningswith different time periods, based on observed usage patterns. Forexample, the application ranking module may learn that weekdays from8:00 to 8:30 AM and from 6:00 to 6:30 PM are the user's typical commutetimes. Similarly, the application ranking module may record dataindicating that 8:00 AM, 1:00 PM, and 6:00 PM are the user's typicalmeal times during weekdays, and 10:00 AM, 2:00 PM, and 8:00 PM are theuser's typical meal times during weekends/holidays.

Referring again to FIG. 11, as depicted at block 812, the applicationranking module may monitor the context of the tablet (e.g., the currentapplication, the current time, the current semantic location, and thecurrent activity). When the context changes, the application rankingmodule may automatically record the current context attributes, as shownat block 814. Those context attributes may include without limitationthe current application, the current time, the current semanticlocation, and the type of activity being engaged in by the user. Forinstance, the application ranking module may determine the presentsemantic location by reverse geocoding the GPS coordinates using a webmapping service application such as the one known as Google Maps. Theapplication ranking module may determine the present activity byinterpreting motion sensing data (e.g., from accelerometer, gyro, etc.)available on the tablet, for instance. In addition, as indicated atblock 816, the application ranking module may automatically evaluate theprobability of activation for each of the applications that areinstalled on the tablet, based on the current context. As shown at block818, after evaluating the probabilities of activation for eachapplication, the application ranking module may then create the contextapplication list, based on the application activation matrix and thecurrent context data. For example, when building the context applicationlist, the application ranking module may omit any rows associated with atime, an activity, a semantic location, or a current application thatdiffers from the current context. Also, when creating the contextapplication list, the application ranking module may order the rows inthe list in decreasing order of transition probability.

In addition, as described in greater detail below, the applicationranking module may include or cooperate with a UI for acceptingvoice-based input. As shown at block 819, whenever the contextapplication list changes, the application ranking module may cause thatvoice-based UI to constrain or limit the vocabulary to be used forinterpreting spoken input, based on meta-data for the currentapplication and a certain number (e.g., one or two) of the currently topranked “next” applications.

As depicted at block 820, the tablet may then determine whetherapplication activation has been requested. In other words, theapplication ranking module may determine whether the user has launchedor resumed use of an application other than the current application. Ifapplication activation has been requested, the application rankingmodule may update the activation matrix accordingly, as shown at block822. For instance, if the requested application is being launched forthe first time, the application ranking module may create a new row inthe application activation matrix to identify the requested applicationas the “next” application, along with data on the present contextattributes (e.g., the current semantic location, time, activity, andapplication). The application ranking module may also add a new row ifthe requested application is being launched for the first time in aparticular context. Or, if the application activation matrix alreadycontains a row for the requested “next” application in the currentcontext, the application ranking module may update or adjust thetransition probability for that row, as well as the transitionprobabilities for any other “next” applications with rows for thecurrent context. Consequently, the application ranking module mayautomatically adapt to changing user preferences. After updating theapplication activation matrix, the application ranking module may launch(or otherwise activate) the requested application, as shown at block824. Then, since the current application has changed, and the currentapplication is part of the context, the process may pass to block 814,with the application ranking module recording the new contextattributes, re-evaluating application activation probabilities, andrevising or recreating the context application list, as described above.

However, referring again to block 820, if application activation has notbeen requested, the application ranking module may determine whether theuser has requested a ranked application list, as indicated at block 830.If the user has requested a list of ranked applications, the applicationranking module may present the list of ranked application on the tablet,as shown at block 832. For instance, the application ranking module maypresent links or shortcuts to each of the applications in the rankedapplication list, ranked in decreasing order of transition probability.For purposes of this disclosure, the terms “link” and “shortcut” may beused to refer to icons, buttons, items in a drop down list, or any othertype of object or item presented by a data processing system to enablethe user to activate an application or other content item. The processmay then pass through connector C to block 820, and the applicationranking module may determine whether the user has selected one of thelisted applications for activation. If the user has selected anapplication for activation, the application ranking module may processthat request as described above with respect to blocks 822, 824, etc.

Referring again to block 820, in a relatively basic embodiment, torequest the ranked application list, the user may touch a specificregion on the screen, press a button on the screen, or press a physicalhotkey on the device. In an advanced embodiment, the application rankingmodule may make the ranked application list accessible through a UI thatrecognizes gestures. For example, the UI may enable the user to navigatesequentially through shortcuts to the applications in the rankedapplication list by making a particular gesture or movement, includingwithout limitation by (a) holding the tablet with two hands on the twoshort edges and shaking the device back and forth towards the left andright, or up and down, or (b) simply shaking the tablet to advance inthe list. In one embodiment, a gesture UI may allow the user to cyclethrough a predetermined number (e.g., three) of shortcuts to top rankedapplications for the current context via natural gestures.

In one embodiment, instead of displaying contextually relevantapplications in a list, the application ranking module may organize theapplications (or shortcuts to the applications) graphically to stressrelevance. For example, in one embodiment, applications that are mostrelevant could be displayed on the first page of the home screen, andless relevant applications could be displayed off-screen (e.g., on otherpages of the home screen). In a different embodiment, the most relevantapplications could be displayed along with content in the home screenUI, for example as graphical user interface (GUI) widgets. For instance,a widget of a video streaming application can be presented, showing inits box the latest releases or the movies that are suggested for thecurrent user by the video streaming application.

In another embodiment, the application ranking module may keep a widgeton the home screen, where the widget always include a shortcut to thetop ranked “next” application. The application ranking module my therebyenable the user to activate the top ranked application with a singleclick, touch, or gesture.

However, referring again to block 830, if the user has not requested aranked application list, the process may pass to block 840, which showsthe application ranking module determining whether the tablet hasreceived voice input or spoken input.

As indicated above, the application ranking module may include orcooperate with a voice-based UI that utilizes meta-data from apredetermined number of top ranked applications (e.g., one, two, three,or more) to constrain the vocabulary for interpreting the spoken input.If voice input has been received, the voice-based UI may use theconstrained vocabulary to interpret that voice input, as depicted atblock 844. For example, the voice-based UI may be part of the OS, anduser may use the constrained vocabulary to launch one of the top rankedapplications. Alternatively, the user may use the constrained vocabularyto activate a feature supported by one of the top ranked applications(e.g., call home).

By enabling the voice-based UI to constrain the vocabulary to a certainnumber of the applications that are most likely to be used in thecurrent context, the application ranking module may help to provide forimprove command recognition accuracy in noisy environments (e.g., at anairport).

After the voice input has been interpreted, or if no voice input isreceived, the process may return to block 812 through connector D, andthe application ranking module may continue adapting to changingconditions, as indicated above. Thus, as has been described, theapplication ranking module uses context awareness to improve theorganization and presentation of shortcuts to applications. By learningand adapting to user preferences and activities observed over time, theapplication ranking module provides for a UI experience that isoptimized and personalized for each different user. As indicated above,the application ranking module also supports a one-click or one-gestureexperience to activate one's most useful application at any place,anytime.

In one embodiment, the application activation matrix also includes dataconcerning specific items or types of content, such as favorite songs,movies, artists, etc., and based on that data and the current contextdata, the application ranking module automatically includes one or moreof those content items in the ranked list of applications, ifappropriate. For instance, if the application activation matrixindicates that Dad usually plays a certain song when driving home fromwork on Friday, the application ranking module may present that song ator near the top of the list of ranked applications in response todetecting that Dad is driving home on a Friday. Similarly, anin-progress movie could be included in the list of ranked applicationswhen the data processing system detects that the user in a contextconducive for watching a movie, such as on the train.

Any suitable operating environment and programming language (orcombination of operating environments and programming languages) may beused to implement components described herein. For example, in oneembodiment, some or all of the family interaction engine is written inthe object-oriented programming language known as “Java,” and some orall the family interaction engine runs on top of a more or lessconventional personal computer OS on the tablet. The application rankingmodule may be implemented as an application manager, the voice-based UImay be implemented as a digital personal assistant, and they may worktogether via any inter-process communication (IPC) mechanisms availableon the platform. In another embodiment, some or all of the familyinteraction engine is written in a combination of the scriptinglanguages known as “PHP” and “JavaScript,” and the family interactionfunctionalities are split between a local client and an engine that runson top of a Unix-like OS on a remote server. For example, basic UIfunctions of the family interaction engine may be performed by a webbrowser on a client device, while other functions are performed on oneor more remote servers. In other embodiments, other types of programminglanguages and operating environments may be used.

In light of the principles and example embodiments described andillustrated herein, it will be recognized that the illustratedembodiments can be modified in arrangement and detail without departingfrom such principles. Also, the foregoing discussion has focused onparticular embodiments, but other configurations are contemplated. Also,even though expressions such as “an embodiment,” “one embodiment,”“another embodiment,” or the like are used herein, these phrases aremeant to generally reference embodiment possibilities, and are notintended to limit the invention to particular embodiment configurations.As used herein, these phrases may reference the same embodiment ordifferent embodiments, and those embodiments are combinable into otherembodiments.

As used herein, the terms “processing system” and “data processingsystem” are intended to broadly encompass a single machine, or a systemof communicatively coupled machines or devices operating together. Forinstance, two or more machines may cooperate using one or morevariations on a peer-to-peer model, a client/server model, or a cloudcomputing model to provide some or all of the functionality describedherein. Those variations on the cloud computing model may include thecomputing service architectures referred to as infrastructure as aservice (“IAAS), platform as a service (“PAAS”), software as a service(“SAAS”), or any other suitable architecture. For instance, a televisionmay include minimal compute and storage resources, and the televisionmay use one or more applications, storage space, and other computingresources on one or more remote devices to provide some or all of thefunctionality described herein. Similarly, applications and/or otherdata (e.g., user profiles) that are described above as residing on aparticular device in one example embodiment may, in other embodiments,reside on one or more other devices. And computing operations that aredescribed above as being performed on one particular device in oneexample embodiment may, in other embodiments, be executed by one or moreother devices. The device or devices which cooperate to form the dataprocessing system may provide a user experience that is familiar acrossdifferent user interface devices, while also being tailored to thosedifferent user interface devices. For instance, a tablet with one ormore sensors may send data to a remote device in the cloud, and thatremote device may host the family interaction engine. The hosted familyinteraction engine may determine which users, if any, are near thetablet, based on the sensor data received from the tablet. Thus, thefamily interaction engine may exist as a service independently of thetablet. Other logical component or modules may also be implemented asremotely hosted services. In one embodiment using the cloud computingmodel, the individual profiles for the family members are stored outsideof the tablet (e.g., in the cloud), and individual profiles are copied,transmitted, or pushed down to devices as needed. For instance, asmartphone may send an image of the face of the current user to thecloud, and in response the cloud may determine which user has that face,and may then send the individual profile for that user to thesmartphone. Also, users may be designated as members of a family, andone or more tablets (or other devices) the family may be designated asbelonging to that same family. Also, the family interaction engine mayblend all of the individual profiles that were designated as part of afamily in the cloud to create the family profile, and the familyinteraction engine may push that family profile down to each devicebelonging to the family. The family interaction engine may alsoregularly push down updates to the individual profiles and the familyprofile. Consequently, when a person or “visitor” borrows a tablet (orother device) from someone else, the tablet may initially allow accessvia a guest account. However, if the family interaction engine in thecloud is able to identify the visitor and find a profile for thevisitor, the family interaction engine may push that profile down to thetablet. The tablet may then automatically reconfigure itself, based onthe visitor's profile. However, the tablet may be configured withrestricted permission for certain users, for instance to prevent accessto the printer and/or other devices and functions.

Example data processing systems include, without limitation, distributedcomputing systems, supercomputers, high-performance computing systems,computing clusters, mainframe computers, mini-computers, client-serversystems, personal computers (PCs), workstations, servers, portablecomputers, laptop computers, tablet computers, personal digitalassistants (PDAs), telephones, handheld devices, entertainment devicessuch as audio devices, video devices, audio/video devices (e.g.,televisions and set top boxes), vehicular processing systems, and otherdevices for processing or transmitting information. Accordingly, unlessexplicitly specified otherwise or required by the context, references toany particular type of data processing system (e.g., a tablet) should beunderstood as encompassing other types of data processing systems, aswell.

Also, unless expressly specified otherwise, components that aredescribed as being coupled to each other, in communication with eachother, responsive to each other, or the like need not be in continuouscommunication with each other and need not be directly coupled to eachother. In addition, some components of the data processing system may beimplemented as adapter cards with interfaces (e.g., a connector) forcommunicating with a bus. Alternatively, devices or components may beimplemented as embedded controllers, using components such asprogrammable or non-programmable logic devices or arrays,application-specific integrated circuits (ASICs), embedded computers,smart cards, and the like. For purposes of this disclosure, the term“bus” includes pathways that may be shared by more than two devices, aswell as point-to-point pathways.

This disclosure may refer to instructions, functions, procedures, datastructures, application programs, configuration settings, and otherkinds of data. As described above, when the data is accessed by amachine, the machine may respond by performing tasks, defining abstractdata types or low-level hardware contexts, and/or performing otheroperations. For instance, data storage, RAM, and/or flash memory mayinclude various sets of instructions which, when executed, performvarious operations. Such sets of instructions may be referred to ingeneral as software. In addition, the term “program” may be used ingeneral to cover a broad range of software constructs, includingapplications, routines, modules, drivers, subprograms, processes, andother types of software components.

It should also be understood that the hardware and software componentsdepicted herein represent functional elements that are reasonablyself-contained so that each can be designed, constructed, or updatedsubstantially independently of the others. In alternative embodiments,many of the components may be implemented as hardware, software, orcombinations of hardware and software for providing the functionalitydescribed and illustrated herein. For example, alternative embodimentsinclude machine accessible media encoding instructions or control logicfor performing the operations of the invention. Such embodiments mayalso be referred to as program products. Such machine accessible mediamay include, without limitation, tangible storage media such as magneticdisks, optical disks, RAM, read only memory (ROM), etc. For purposes ofthis disclosure, the term “ROM” may be used in general to refer tonon-volatile memory devices such as erasable programmable ROM (EPROM),electrically erasable programmable ROM (EEPROM), flash ROM, flashmemory, etc. In some embodiments, some or all of the control logic forimplementing the described operations may be implemented in hardwarelogic (e.g., as part of an integrated circuit chip, a programmable gatearray (PGA), an ASIC, etc.). In at least one embodiment, theinstructions for all components may be stored in one non-transitorymachine accessible medium. In at least one other embodiment, two or morenon-transitory machine accessible media may be used for storing theinstructions for the components. For instance, instructions for onecomponent may be stored in one medium, and instructions anothercomponent may be stored in another medium. Alternatively, a portion ofthe instructions for one component may be stored in one medium, and therest of the instructions for that component (as well instructions forother components), may be stored in one or more other media.Instructions may also be used in a distributed environment, and may bestored locally and/or remotely for access by single or multi-processormachines.

Also, although one or more example processes have been described withregard to particular operations performed in a particular sequence,numerous modifications could be applied to those processes to derivenumerous alternative embodiments of the present invention. For example,alternative embodiments may include processes that use fewer than all ofthe disclosed operations, process that use additional operations, andprocesses in which the individual operations disclosed herein arecombined, subdivided, rearranged, or otherwise altered.

In view of the wide variety of useful permutations that may be readilyderived from the example embodiments described herein, this detaileddescription is intended to be illustrative only, and should not be takenas limiting the scope of the invention. Instead, the scope of theinvention is intended to cover many different embodiments, includingwithout limitation embodiments with the features described in thefollowing paragraphs.

(A1) A method facilitates multi-user interaction with a data processingsystem. The method involves a data processing system with individualuser profiles for respective individual users and with a family userprofile for a collective family user. The data processing systemautomatically determines a first set of content items for a familychannel, based at least in part on the family user profile. The dataprocessing system automatically presents the family channel when thefamily user profile is open. After automatically determining the firstset of content items for the family channel, one of the individual userprofiles is modified, based on interaction with the data processingsystem by the corresponding individual user. After modifying theindividual user profile, the family user profile is automaticallymodified, based on the modified individual user profile. The dataprocessing system automatically determines a second set of content itemsfor the family channel, based at least in part on the modified familyuser profile.

(A2) A method according to paragraph A1 further comprises: automaticallydetermining whether all of the individual user profiles are inactive;and automatically presenting the family channel in response to adetermination that all of the individual user profiles are inactive.

(A3) A method according to paragraph A1 further comprises automaticallycycling through different items from the first set of content items whenpresenting the family channel on the data processing system.

(A4) In a method according to paragraph A1, the second set of contentitems comprises at least two items from the group consisting of acalendar event, a photo, a video, a favored music file, and weatherinformation.

(A5) In a method according to paragraph A1, the individual user profilescomprise a first user profile for a first user and a second user profilefor a second user. And the method further comprises: after the firstuser has signed in to the data processing system, presenting a first setof recommendations for content predicted to be of interest to the firstuser; presenting the first user with an option for selecting the seconduser to be included for purposes of recommendations, and receiving inputfrom the first user selecting the second user to be included forpurposes of recommendations; and in response to receiving the input fromthe first user selecting the second user to be included for purposes ofrecommendations, automatically presenting at least one recommendationfrom a second set of recommendations for content predicted to be ofinterest to the first user and the second user.

(A6) A method according to paragraph A5 further comprises, in responseto receiving the input from the first user selecting the second user tobe included for purposes of recommendations, automatically determiningthe second set of recommendations for content predicted to be ofinterest to the first user and the second user.

(A7) A method according to paragraph A5, further comprises:automatically determining content items for a home screen of the firstuser; and automatically including, among the content items for the homescreen of the first user, at least one recommendation for contentpredicted to be of interest to the first user.

(A8) In a method according to paragraph A5, the operation of presentingthe first user with an option for selecting a second user to be includedfor purposes of recommendations comprises presenting a selectableidentifier for the second user; and the operation of automaticallypresenting at least one recommendation from a second set ofrecommendations for content predicted to be of interest to the firstuser and the second user is performed in response to user inputselecting the selectable identifier for the second user.

(A9) In a method according to paragraph A8, the operation of presentinga selectable identifier for the second user comprises presentingselectable identifiers for all users with user profiles on the dataprocessing system.

(A10) A method according to paragraph A5 further comprises: in responseto receiving the input from the first user selecting the second user tobe included for purposes of recommendations, automatically notifying aremote application that the second user has been selected to be includedfor purposes of recommendations; and after notifying the remoteapplication that the second user has been selected to be included forpurposes of recommendations, receiving the second set of recommendationsfrom the remote application. And the operation of automaticallypresenting at least one recommendation from a second set ofrecommendations for content predicted to be of interest to the firstuser and the second user is performed in response to receiving thesecond set of recommendations from the remote application.

(A11) A method according to paragraph A5 further comprises:automatically detecting whether a person with a user profile for thedata processing system is near the data processing system; and inresponse to automatically detecting that a person with a user profilefor the data processing system is near the data processing system,automatically causing the detected person to be included for purposes ofrecommendations.

(A12) A method according to claim paragraph A11 further comprises:presenting the first user with an option for activating automatic grouprecommendations; and receiving user input selecting the option foractivating automatic group recommendations. And the operation ofautomatically detecting whether a person with a user profile for thedata processing system is near the data processing system is performedin response to receiving the user input selecting the option foractivating automatic group recommendations.

(B1) Another method facilitates multi-user interaction with a dataprocessing system. The method involves a data processing system withmultiple content items, with multiple individual user accounts formultiple respective individual users, with a corresponding individualuser profile for each individual user account, with a family useraccount for a collective family user, and with a family user profilecorresponding to the family user account. According to the method, oneof the individual user accounts is opened in response to a current userlogging in to the data processing system. In response to a determinationthat the current user has selected a content item among the multiplecontent items for sharing, the data processing system presents one ormore selectable user identifiers for one or more other individual usersand the data processing system presents a selectable user identifier forthe family user. In response to determining that the current user hasselected the user identifier for the family user, the family userprofile is automatically modified to identify the selected content itemas having been shared with the family user. And when the family useraccount is open, the data processing system displays a home screen forthe family user that contains information about the selected contentitem that was shared with the family user.

(B2) A method according to paragraph B1 further comprises: in responseto determining that the current user has selected a user identifier foranother individual user, automatically modifying the correspondingindividual user profile to identify the selected content item as havingbeen shared with the selected individual user; and when the user accountfor the selected individual user is open, displaying a home screen forthe selected individual user that contains information about theselected content item that was shared with the selected individual user.

(B3) In a method according to paragraph B1, the data processing systemcomprises a list of contacts for the current user; and the methodfurther comprises receiving user input that selects at least oneindividual from the list of contacts for inclusion as a potentialrecipient.

(B4) A method according to paragraph B1 further comprises: automaticallydetecting one or more remote devices near the data processing system;presenting one or more selectable device identifiers for the one or moreremote devices: and in response to determining that the current user hasselected a device identifier, automatically sending the selected contentitem to the selected device.

(B5) A method according to paragraph B4 further comprises: automaticallydetermining a direction from the data processing system to at least oneof the remote devices; automatically determining whether the currentuser has moved the identifier for the selected content item towards oneof the remote devices; and in response to determining that the currentuser has moved the identifier for the selected content item towards oneof the remote devices, automatically sending the selected content itemto the remote device towards which the identifier for the selectedcontent item was moved.

(B6) A method according to paragraph B5 further comprising saving aconfiguration setting that selects among multiple content displayoptions for the user account of the current user. Also, the contentdisplay options comprise: a first option configuring the data processingsystem to automatically display content that has been sent to the dataprocessing system; and a second option configuring the data processingsystem to automatically display a notification that content has beensent to the data processing system.

(B7) A method according to paragraph B4 further comprises presentingmultiple sharing options for the selected content item, wherein themultiple sharing options comprise at least one identifier for a firstset of potential recipients for the selected content item and at leastone identifier for a second set of potential recipients for the selectedcontent item. The at least one identifier for the first set of potentialrecipients comprises at least one of the user identifiers. The at leastone identifier for the second set of potential recipients comprises atleast one of the device identifiers.

(B8) In a method according to paragraph B7, the user identifierscomprise a name and a picture for at least one of the other individualusers, and the at least one device identifier comprises a name and apicture for at least one individual user associated with at least one ofthe other devices.

(B9) A method according to paragraph B4 further comprises presenting atleast two different sets of potential recipients for selected contentitem, wherein first set of potential recipients comprises at least oneof the user identifiers, and the second set of potential recipientscomprises at least one of the device identifiers.

(B10) In a method according to paragraph B1, the data processing systemperforms the operation of presenting one or more selectable useridentifiers for one or more respective other individual users andpresenting a selectable user identifier for the family user in responseto the current user selecting the content item for sharing. Also, themethod further comprises determining that the current user has selectedthe content item for sharing in response to a determination that thecurrent user has dragged an identifier for the selected content item toan edge of a display for the data processing system.

(B11) In a method according to paragraph B1, the current user comprisesa first user; the one or more selectable user identifiers comprise anidentifier for a second user; and the method further comprises:automatically determining whether the first user is hovering anidentifier for the selected content item over the identifier for thesecond user; in response to determining that the first user is hoveringthe identifier for the selected content item over the identifier for thesecond user, automatically presenting the first user with options forselecting among multiple devices associated with the second user; and inresponse to determining that the first user has selected one of devicesassociated with the second user, automatically sending the selectedcontent item to the selected device associated with the second user.

(B12) In a method according to paragraph B1, the individual userscomprise first and second members of a family; the selected content itemcomprises a video featuring the first member of the family; and theoperation of, when the family user account is open, displaying a homescreen for the family user that contains information about the selectedcontent item that was shared with the family user comprisesautomatically presenting at least part of the video featuring the firstmember of the family in a widget item on the home screen for the familyuser.

(C1) Another method facilitates multi-user interaction with a dataprocessing system. The method involves a data processing system with afirst user profile for a first user and a second user profile for asecond user. The method comprises the operations of automaticallydetermining, when the first user profile is open, whether the first userhas handed the data processing system to another person; and in responseto determining that the first user has handed the data processing systemto another person, automatically determining an identity of the otherperson and automatically presenting transfer options on the dataprocessing system. And when the other person comprises the second user,the transfer options comprise an identifier for the first user and anidentifier for the second user, and the transfer options provide forselection from among at least two options from the group consisting of:keeping the first user profile open; automatically signing the firstuser out and signing the second user in; and temporarily opening thesecond user profile without signing the first user out.

(C2) A method according to paragraph C1 further comprises, in responseto user selection of one of the transfer options, automaticallyexecuting the selected transfer option.

(C3) A method according to paragraph C1 further comprises: in responseto detecting that the identifier for the second user has been pushed offof the display, determining that the option for keeping the first userprofile open has been selected; and in response to detecting that theidentifier for the first user has been pushed off of the display,determining that the option for automatically signing the first user outand signing the second user in has been selected.

(C4) A method according to paragraph C3 further comprises, in responseto detecting that the identifier for the second user has been pulledtoward the center of the display, determining that the option fortemporarily opening the user profile for the second user without signingthe first user out has been selected.

(C5) In a method according to paragraph C1, the transfer options furtherprovide for selection of an option to keep the first user profile openwhile adding the second user to a recommendation group.

(C6) A method according to paragraph C5 further comprises, in responseto detecting that the identifier for the second user has been selected,determining that the option to keep the first user profile open whileadding the second user to the recommendation group has been selected.

(C7) A method according to paragraph C1 further comprises, in responseto expiration of a predetermined time period without the identifiers forthe first and second users being selected, determining that the optionfor keeping the first user profile open has been selected andautomatically removing the identifiers for the first and second usersfrom the display.

(C8) In a method according to paragraph C1, the operation ofautomatically determining an identity of the other person comprisesautomatically using at least one technology from the group consisting offace recognition technology and voice recognition technology todetermine the identity of the other person.

(D1) Another method facilitates multi-user interaction with a dataprocessing system. The method involves a data processing system withindividual profiles for respective individual users and with a familyprofile for a collective family user. The method comprises theoperations of automatically detecting whether a person is near the dataprocessing system, and in response to detecting the person near the dataprocessing system, automatically determining whether the detected personis one of the individual users with individual profiles on the dataprocessing system. The method also comprises, in response to adetermination that the detected person is one of the individual userswith individual profiles on the data processing system, automaticallydetermining a set of content items to be presented, based at least inpart on a combination of information from the individual profile for thedetected person and information from the family profile. The method alsocomprises, after determining a set of content items to be presented,automatically causing at least some of the items from the set of contentitems to be presented.

(D2) In a method according to paragraph D1, the operation ofautomatically determining a set of content items to be presentedcomprises recognizing interests of the family user and interests of thedetected person; evaluating potential content items, with regard torelevance to the recognized interests of the family user; evaluatingpotential content items, with regard to relevance to the recognizedinterests of the detected person; including potential content items withhigh relevance to the recognized interests of the family user in the setof content items to be presented; and including potential content itemswith high relevance to the recognized interests of the detected personin the set of content items to be presented.

(D3) In a method according to paragraph D2, the operation ofautomatically determining a set of content items to be presentedcomprises analyzing potential content items from multiple sources, withregard to relevance to at least one factor from the group consisting ofthe recognized interests of the family user and the recognized interestsof the detected person.

(D4) In a method according to paragraph D3, the multiple sourcescomprise at least one source from the group consisting of predeterminedpreferences for at least one individual user, predetermined preferencesfor the family user, behavior observation data, and a digital personaservice.

(D5) A method according to paragraph D1 further comprises, afterautomatically causing at least some of the items from the set of contentitems to be presented, automatically determining whether a newer contentitem is available; and in response to a determination that a newercontent item is available, automatically causing the newer content itemto be presented, in place of an older content item.

(D6) A method according to paragraph D1 further comprises, afterautomatically causing at least some of the items from the set of contentitems to be presented, automatically determining whether context of thedata processing system has changed; and in response to a determinationthat context of the data processing system has changed, automaticallymodifying the set of content items to be presented, based at least inpart on the changed context.

(D7) A method according to paragraph D1 further comprises automaticallydetermining a set of container objects to be presented in a familychannel, based at least in part on predetermined user settings;organizing at least some of the content items into the containerobjects; automatically determining whether context for the dataprocessing system has changed; and in response to a determination thatcontext for the data processing system has changed, dynamically changingthe set of container objects to be presented in the family channel.

(D8) In a method according to paragraph D1, the set of content itemscomprises at least two items from the group consisting of a stockticker, a photo, a video, a music file, a news feed, a family calendar,a family favored photo, a family favored video, a family favored musicfile, a health update, a school web site, a teacher update, a note fromone individual user to the family, and an entertainment application.

(E1) A method for dynamically tailoring supplemental data to bepresented involves a data processing system with individual profiles forrespective individual users, wherein the individual profiles comprise afirst user profile for a first user and the first user profileidentifies at least one interest of the first user. The method comprisesthe operations of determining that the first user is interacting withthe data processing system while media content is being presented; inresponse to determining that the first user is interacting with the dataprocessing system while the media content is being presented,automatically analyzing supplemental data to determine whether thesupplemental data is relevant to the media content and to the interestof the first user identified in the first user profile; and in responseto determining that the supplemental data is relevant to the mediacontent and to the interest of the first user identified in the firstuser profile, automatically causing the supplemental data to bepresented.

(E2) In a method according to paragraph E1, the individual profilescomprise a second user profile for a second user, and the second userprofile identifies at least one interest of the second user. Also, themethod further comprises automatically detecting that the second user isinteracting with the data processing system while the media content isbeing presented; in response to determining that the second user isinteracting with the data processing system while the media content isbeing presented, automatically analyzing additional supplemental data todetermine whether the additional supplemental data is relevant to themedia content and to the interest of the second user identified in thefirst user profile; and in response to determining that the additionalsupplemental data is relevant to the media content and to the interestof the second user identified in the first user profile, automaticallycausing the additional supplemental data to be presented.

(E3) In a method according to paragraph E2, the operation ofautomatically causing the additional supplemental data to be presentedcomprises causing the supplemental data to be replaced by the additionalsupplemental data.

(E4) In a method according to paragraph E1, the operation ofautomatically analyzing supplemental data to determine whether thesupplemental data is relevant to the media content and to the interestof the first user identified in the first user profile comprisesanalyzing information from multiple sources.

(E5) In a method according to paragraph E4, the multiple sourcescomprise at least two items from the group consisting of individualuser-specified preferences, behavior observation data, and a digitalpersona service.

(E6) A method according to paragraph E1 further comprises detectinganother device near the data processing system; sending information tothe other device; and receiving information from the other device. Theother device presents the media content. And the operation ofautomatically analyzing supplemental data to determine whether thesupplemental data is relevant to the media content and to the interestof the first user identified in the first user profile comprisesanalyzing the information received from the other device.

(E7) A method according to paragraph E1 further comprises automaticallyusing state data pertaining to the supplemental data for the first userto update the first user profile, in response to detecting that thefirst user is interacting with the data processing system while themedia content is being presented.

(F1) A method for facilitating multi-user interaction involves a dataprocessing system with individual profiles for respective individualusers and with a family profile for a collective family user. The methodcomprises the operations of automatically detecting whether a person isnear the data processing system; in response to detecting the personnear the data processing system, automatically determining whether thedetected person is one of the individual users with individual profileson the data processing system; in response to a determination that thedetected person is one of the individual users with individual profileson the data processing system, automatically determining a set ofcontent items to be presented, based at least in part on a combinationof information from the individual profile for the detected person andinformation from the family profile; and after determining a set ofcontent items to be presented, automatically causing at least some ofthe items from the set of content items to be presented.

(F2) In a method according to paragraph F1, the operation ofautomatically determining a set of content items to be presentedcomprises recognizing interests of the family user and interests of thedetected person; evaluating potential content items, with regard torelevance to the recognized interests of the family user; evaluatingpotential content items, with regard to relevance to the recognizedinterests of the detected person; including potential content items withhigh relevance to the recognized interests of the family user in the setof content items to be presented; and including potential content itemswith high relevance to the recognized interests of the detected personin the set of content items to be presented.

(F3) In a method according to paragraph F2, the operation ofautomatically determining a set of content items to be presentedcomprises analyzing potential content items from multiple sources, withregard to relevance to at least one factor from the group consisting ofthe recognized interests of the family user and the recognized interestsof the detected person.

(F4) In a method according to paragraph F3, the multiple sourcescomprise at least one source from the group consisting of predeterminedpreferences for at least one individual user, predetermined preferencesfor the family user, behavior observation data, and a digital personaservice.

(F5) A method according to paragraph F1 further comprises, afterautomatically causing at least some of the items from the set of contentitems to be presented, automatically determining whether a newer contentitem is available; and in response to a determination that a newercontent item is available, automatically causing the newer content itemto be presented, in place of an older content item.

(F6) A method according to paragraph F1 further comprises, afterautomatically causing at least some of the items from the set of contentitems to be presented, automatically determining whether context of thedata processing system has changed; and in response to a determinationthat context of the data processing system has changed, automaticallymodifying the set of content items to be presented, based at least inpart on the changed context.

(F7) A method according to paragraph F1 further comprises automaticallydetermining a set of container objects to be presented in a familychannel, based at least in part on predetermined user settings;organizing at least some of the content items into the containerobjects; automatically determining whether context for the dataprocessing system has changed; and in response to a determination thatcontext for the data processing system has changed, dynamically changingthe set of container objects to be presented in the family channel.

(F8) In a method according to paragraph F1, the set of content itemscomprises at least two items from the group consisting of a stockticker, a photo, a video, a music file, a news feed, a family calendar,a family favored photo, a family favored video, a family favored musicfile, a health update, a school web site, a teacher update, a note fromone individual user to the family, and an entertainment application.

(G) Furthermore, the features of paragraph A1 may be combined with thefeatures described in any one or more of paragraphs A2 through A12, B1through B12, C1 through C8, D1 through D8, E1 through E7, and F1 throughF8. Also, the features of paragraph B1 may be combined with the featuresdescribed in any one or more of paragraphs A1 through A12, B2 throughB12, C1 through C8, D1 through D8, E1 through E7, and F1 through F8.Also, the features of paragraph C1 may be combined with the featuresdescribed in any one or more of paragraphs A1 through A12, B1 throughB12, C2 through C8, D1 through D8, E1 through E7, and F1 through F8.Also, the features of paragraph D1 may be combined with the featuresdescribed in any one or more of paragraphs A1 through A12, B1 throughB12, C1 through C8, D2 through D8, E1 through E7, and F1 through F8.Also, the features of paragraph E1 may be combined with the featuresdescribed in any one or more of paragraphs A1 through A12, B1 throughB12, C1 through C8, D1 through D8, E2 through E7, and F1 through F8.Also, the features of paragraph F1 may be combined with the featuresdescribed in any one or more of paragraphs A1 through A12, B1 throughB12, C1 through C8, D1 through D8, E1 through E7, and F2 through F8.

(H) At least one machine accessible medium comprises technology tofacilitate multi-user interaction with a data processing system. Themachine accessible medium comprises instructions which, when executed bya data processing system, cause the data processing system to performthe operations (or combination of operations) described in any ofparagraphs A1 through A12, B1 through B12, C1 through C8, D1 through D8,E1 through E7, F1 through F8, and G.

(I) A data processing system comprises technology to facilitatemulti-user interaction. The data processing system comprises a processorand at least one machine accessible medium responsive to the processor.The machine accessible medium comprises instructions which, whenexecuted by the data processing system, cause the data processing systemto perform the operations (or combination of operations) described inany of paragraphs A1 through A12, B1 through B12, C1 through C8, D1through D8, E1 through E7, F1 through F8, and G.

(J) For purposes of establishing initial parameters to guide examinationof the present application—and without disclaiming, for purposes ofrights to be secured with subsequent applications or with furtherprosecution of the present application, embodiments that may depart insome degree from these initial parameters—what is claimed are allimplementations that come within the scope of the claims set forth inthe “Claims” section, and all equivalents to such implementations.

APPENDIX A Mobile Device Position Detection

In some embodiments, a first device may be a mobile device, such as, butnot limited to, a tablet, smart phone, laptop, gaming console, portablemedia player, personal navigation device, personal digital assistant, orother mobile device. The first device may be moved by the user of thefirst device. For example, the first device may be a smart phone and theuser may place the first device in proximity to the second device. Oncewithin the proximity of the second device, the first device may beconfigured to determine the relative position of the first device withrespect to the second device.

By determining the relative position of the first device with respect tothe second device, in some embodiments, a user of the first device maytransfer data between the first and second devices using intuitivegestures. For example, if the first device is a tablet with a touchscreen, the user of the first device may share a music file with thesecond device by pushing the music file toward the second device on thescreen of the first device. The first device may recognize that the useris pushing the music file toward the second device because the relativeposition of the second device with respect to the first device is knownto the first device. The first device may send the music file to thesecond device through a previously established communication channel orthrough a communication channel that is then established between thefirst and second devices. The above scenario is just one example of howthe first device may use the information of the relative position of thesecond device with respect to the first device.

The first device may include a processor, sensor, and a distancedetermination module, all of which may be used to determine the relativeposition of the first device with respect to the second device. Once thefirst device is within the proximity of the second device, the distancedetermination module may calculate a first distance between the firstdevice and the second device.

The distance determination module may be configured to calculate thefirst distance between the first and second devices using multiplemethods. For example, in some embodiments, the distance determinationmodule may use ultrasonic sound waves to calculate the distance betweenthe first and second modules. In some embodiments, the distancedetermination module may emit an ultrasonic sound wave and based on thetime of a reflection from the second device, the first distance may becalculated. Alternately or additionally, the distance determinationmodule may emit an ultrasonic sound wave and based on the time for thesound wave to be received by the second device, the first distance maybe calculated.

In some embodiments, the distance determination module may use radiofrequency signal strengths to calculate the first distance between thefirst and second devices. For example, in some embodiments, the firstand second devices may be communicating using a Bluetooth or otherdirect wireless communication link, such as wireless universal serialbus (USB) or wireless USB on-the-go. In these and other embodiments,based on the signal strength of the communication link, the firstdistance between the first and second devices may be calculated. In someembodiments, the first and second devices may be connected to a channelof a wireless network. In these and other embodiments, the firstdistance between the first and second devices may be calculated based onthe radio frequency strengths of a signal transmitted between the firstand second devices, such as a beacon. In some embodiments, other methodsor techniques may be used to calculate the first distance between thefirst and second devices. After calculating the first distance, thesensor may be configured to sense a movement of the first device andgenerate movement data. Using the movement data, the sensor, theprocessor, or some other module within the first device may beconfigured to determine a direction of the movement of the first device.For example, in some embodiments, the sensor may be an accelerometer.The accelerometer may sense the acceleration of the first device andgenerate acceleration data. Using the acceleration data, a module withthe first device, such as the processor, the sensor, or some othermodule, may determine the direction of the movement of the first device.In some embodiments, the sensor may be more than one sensor. Forexample, the sensor may include an accelerometer and a gyroscope. Datamay be collected from both the accelerometer and the gyroscope todetermine the direction of the movement of the first device. In someembodiments, the sensor may be another type of sensor capable ofgenerating data that may be used to determine the direction of movementof the first device.

In an example scenario, the first device may be moved toward the seconddevice. After the movement of the first device, a second distancebetween the first device and the second device is calculated using thedistance determination module. The distance determination module maycalculate the second distance in the same manner as the first distancewas calculated or in a different manner.

In some embodiments, after calculating the first distance, the seconddistance, and the direction of the movement of the first device, theprocessor may be configured to use the first distance, the seconddistance, and the direction of the movement of the first device todetermine the relative location of the first device with respect to thesecond device. In particular, the processor may determine the relativelocation of the first device by analyzing the change in distance betweenthe first and second devices, as determined by the difference betweenthe first distance and the second distance and the direction of themovement of the first device.

In some embodiments, the methods or techniques used to calculate thefirst and second distances may not produce accurate distancemeasurements between the first and second devices. In these and otherembodiments, the first and second distances may be approximate distancesbetween the first and second devices. The method and techniques used tocalculate the first and second distances need only be accurate enough toallow for the determination of the relative position of the first devicewith respect to the second device.

In some embodiments, the first and second devices may lie within the xyplane separated by the first distance. The first device may move withinthe xy plane in the −x direction, that is the first device may movetoward the second device along the x-axis. Because the distance betweenthe first and second devices decreased, the processor may determine thatthe second device is located in the direction of movement of the firstdevice, that is the −x direction, with respect to the first device.Based on this information, the processor may also determine that thefirst device is located in the +x direction with respect to the seconddevice.

In another scenario, the first device may move in the +x direction, andthe second distance measured after the movement of the first device maybe larger than the first distance. Because the distance between thefirst and second devices increased, the processor may determine that thesecond device is located in the opposite direction of the movement ofthe first device, that is the −x direction, with respect to the firstdevice. Based on this information, the processor may also determine thatthe first device is located in the +x direction with respect to thesecond device.

Further information may assist in determining the relative position ofthe first device with respect to the second device. For example, thesensor may determine the direction of the movement of the first deviceand a distance moved by the first device. The distance and direction ofthe movement of the first device along with the first and seconddistances may allow the processor to determine more accurately therelative positions of the first and second devices.

In some embodiments, the first device may contain an orientation sensorA and the second device may contain an orientation sensor B. Theorientation sensors A, B may be configured to determine the orientationsof the first device and the second device respectively. In someembodiments, the orientation sensors A, B may share a similar coordinateframe of reference. For example, in some embodiments, the orientationsensors A, B may be compass sensors that determine the orientation ofthe first and second devices based on a coordinate system using thedirections of north, south, east, and west. Using the coordinate frameof reference of the orientation sensor A, a common coordinate frame ofreference for the sensor may be also determined. Using this commoncoordinate frame of reference, the relative direction of movement of thefirst device may be communicated to the second device and/or otherdevice even if the second device and/or other device do not share asimilar orientation. Furthermore, using a common coordinate frame ofreference, the relative position of the first device with respect to thesecond device may be shared with the second device and/or other devicesto enable the second device and/or other devices to determine theirrelative position with respect to the first device even if first andsecond device and/or other devices do not share a similar orientation.

Additionally, the granularity and accuracy of the information used bythe processor, such as the first and second distances and the directionand distance of the movement of the first device, may determine theaccuracy of the determined relative positions of the first and seconddevices. For example, in some embodiments, the relative positions of thefirst and second devices may be determined to be one of four generaldirections, such as +x, −x, +y, −y. In other embodiments, the relativepositions of the first and second devices may be determined to be one ofeight general directions, such as +x, −x, +y, −y, +x+y, −x+y, +x−y,+x−y. In other embodiments, the relative positions of the first andsecond devices may be determined to be one of six general directions,such as +x, −x, +y, −y, −z, +z. It is noted that numerous othercombinations and numbers of general directions for the relativepositions of the first and second devices may be possible based on thegranularity and accuracy of the information used by the processor.

In some embodiments, the processor, sensor, and/or the distancedetermination module may be combined in a single module or may beindividual modules within the first device. In some embodiments, theprocessor, sensor, and the distance determination module may be used bythe first device to perform operations other than determining therelative positions of the first and second devices. In some embodiments,the distance determination module and the processor may be implementedin hardware, firmware, and/or software.

In some embodiments, the second device may be a mobile device or astationary device, such as a desktop computer, smart television, orother stationary electronic device. In some embodiments, a communicationlink between the first and second devices may be established before,during, or after the relative positions of the first and second devicesare determined. The communication link may be a wireless communicationlink or a wired communication link. In some embodiments, the firstdevice may send the determined relative position of the second devicewith respect to the first device to the second device.

In some embodiments, the first device may include more than one sensor.For example, in some embodiments, the first device may include two ormore sensors that may be used in combination or individually todetermine a direction of movement of the first device.

One example system includes a first device and a second device. Thefirst device includes an antenna A, a processor, and a sensor. Thesecond device includes an antenna B.

In some embodiments, the first and second devices may be communicatingover a channel within a wireless network. As part of communicating overthe wireless network, the first and second devices may be transmittingwireless network signals. For example, if the wireless network is an802.11 wireless network, the wireless network signal may be a beaconsignal. The wireless network signal may contain data therein. Forexample, in some embodiments, the wireless network signal may includethe signal strength of the wireless network signal when transmitted. Insome embodiments, the wireless network signal may also include the mediaaccess control (MAC) address of the device transmitting the wirelesssignal.

Being part of the same channel within a wireless network, the firstdevice may receive a wireless network signal from the second device thatmay not be directly intended for the first device or a directcommunication with the first device. Likewise, in some embodiments, thesecond device may receive a wireless network signal from the firstdevice that may not be directly intended for the second device or adirect communication with the second device.

Using the information within the wireless network signal, first devicemay determine the transmission signal strength of the wireless networksignal. The transmission signal strength may be the strength of thewireless network signal when the wireless network signal is firstbroadcast by the antenna B of the second device. The first device mayalso determine the received signal strength of the wireless networksignal when the wireless network signal is received by the antenna A ofthe first device. The received signal strength may be the strength ofthe wireless network signal at the antenna A when received by the firstdevice.

Using the strength of the wireless network signal at transmission andreception, the processor in the first device may calculate a firstdistance between the first and second devices. In these and otherembodiments, the first and second devices may be close enough to eachother so that the antenna A is in a location where a line of sightsignal of the wireless network signal is the dominant signal. In someembodiments, where the antenna A is in a location where the reflectivesignal of the wireless network signal is the dominant signal, othermeans may be used to calculate a distance between the first and seconddevices.

After determining the first distance between the first and seconddevices, the first device may determine a direction of a movement of thefirst device using the sensor. In some embodiments, the sensor may be anaccelerometer that produces acceleration data representing theacceleration of the first device. The processor or some other modulewithin the first device may determine the direction of the movement ofthe first device based on the acceleration data. For instance, the firstdevice may move from an original position in a +x direction from thesecond device to a second position farther away from the second devicein the +x direction.

The processor may then use the transmission and reception strength of awireless network signal transmitted and received after the first deviceis in the second position to calculate a second distance between thefirst and second devices. With the calculated first and second distancesand the direction of the movement of the first device, the processor maydetermine the relative position of the first device with respect to thesecond device in a similar fashion as described above. Thus, in someembodiments, the relative position of the first device with respect tothe second device may be determined when each of the first and seconddevices contain a single antenna, A, B.

In some embodiments, the first and/or second distances used to determinethe relative position between the first and second device may be basedon one or more calculated distances between the first and seconddevices. For example, before the movement of the first device, the firstdevice may calculate a first distance between the first and seconddevices multiple times using multiple wireless network signals. Forexample, the first device may receive five wireless network signals fromthe second device and may calculate the first distance five times beforethe movement of the first device. In some embodiments, the firstdistance used by the processor to determine the relative position of thefirst device with respect to the second device may be the mean, medium,weighted mean, or some other combination or subset combination of thefive calculated first distances. For example, the first distances usedby the processor to determine the relative position of the first andsecond devices may be the mean of the first distances that are withinone standard deviation of the mean of the five calculated firstdistances. In other embodiments, the first distance used by theprocessor may be the shortest or longest of the five calculated firstdistances.

In some embodiments, after determining the relative position of thesecond device, the first device may establish a communication linkbetween the first and second devices. In some embodiments, the firstdevice may establish the communication link using the MAC addressobtained from the beacon transmitted by the second device. Establishingthe communication link may allow the first and second devices to sharedata. The communication link may also allow the first device to sharethe relative position of the first device with respect to the seconddevice with the second device. For example, in some embodiments, thefirst and second devices may share data as directed by intuitivegestures by users of the first and second devices.

In some embodiments, the first device may send the first and seconddistances and the direction of movement of the first device to anotherdevice for processing and determining the relative position of the firstand second device. Alternately or additionally, another device besidesthe first device may calculate the first or second distances or thedirection of movement of the first device. The other device may receiveinformation from the first device necessary to determine the first andsecond distances and the direction of movement of the first device. Insome embodiments, the processor may be implemented in hardware,firmware, and/or software.

One example scenario involves a mobile device and three other devices:device A, device B, and a device C. The mobile device may be a devicesimilar to the device referred to above as the first device. Forinstance, the mobile device may be configured to determine the relativepositions of the device A, device B, and the device C with respect tothe mobile device.

In some embodiments, the mobile device and the devices A, B, C may beoperating on the same channel within a wireless network. The mobiledevice may determine the relative positions of the devices A, B, C usinga wireless network signal received from the devices A, B, C similar tohow the mobile device determined the relative position of the seconddevice with respect to FIG. 2. For example, the mobile device maydetermine that the device A is in the +y direction, that the device B isin the +x direction, and that the device C is in the −y direction. Themobile device may associate the MAC addresses of the devices A, B, Cwith their relative positions and establish a communication link withthe devices A, B, C. A user of the mobile device may transfer data todevice A by pushing the data in the +y direction along a screen of themobile device. Likewise, the user of the mobile device may transmit datato device B by pushing data in the +x direction along the screen and maytransmit data to the device C by pushing data in the −y direction alongthe screen.

In some embodiments, one or more of the devices A, B, C may be mobiledevices. In these and other embodiments, the mobile device may notestablish a communication link with the devices A, B, C until promptedby a user of the mobile device. The mobile device may be prompted toestablish a communication link to transfer data with the device A, forexample, by the user moving the mobile device in the +y direction towardthe device A. A connection may be established if a user of device A alsomoves the device A in a −y direction toward the mobile device. In someembodiments, a communication link to transfer data may be established ifthe movements of the mobile device and the device A occur with apredetermined period, such as 1 second, 1.5 seconds, 3 seconds, or someother period.

An example method may be used to describe operations performed, forexample, by the devices described above as the first device and thesecond device. For one operation, a first distance between first andsecond devices is calculated. The first distance may be calculated byeither the first device, the second device, or some other device. Thefirst distance may be calculated using one or more methods. For example,in some embodiments, ultrasonic sound waves emitted by either the firstor the second device may be used to calculate the distance. Alternatelyor additionally, a signal emitted from one of the first and seconddevices and received by the other of the first and second devices may beused to determine the distance between the first and second devices. Forexample, in some embodiments, the second device may emit a wirelessnetwork signal used within a wireless communication network. Forexample, in some embodiments, the wireless network signal may be abeacon signal that contains the transmission strength of the beaconsignal. Based on the strength of the signal when received by the firstdevice and the strength of the signal with transmitted by the seconddevice, the distance between the first and second devices may becalculated.

A direction of a movement of the first device may then be determined. Insome embodiments, determining the direction of the movement may includesensing the direction of the movement using at least one sensor withinthe first device. In some embodiments, the sensor may be anaccelerometer. In these and other embodiments, sensing the direction ofmovement of the first device may include sensing acceleration or othermovement and generating movement data representing the movement of thefirst device. The direction of movement may then be derived from themovement data generated by the sensor. In some embodiments, the sensormay derive the direction from the movement data. Alternately oradditionally, a processor or other module within the first device orsome other device, such as the second device that receives the movementdata, may derive the direction from the movement data.

A second distance between the first and second devices may be calculatedafter the movement of the first device. The second distance may becalculated by either the first device, the second device, or some otherdevice. The second distance may be calculated using one or more methodsas described above. In some embodiments, the same method used tocalculate the first distance may be used to calculate the seconddistance. In some embodiments, a different method may be used tocalculate the second distance.

Then, the relative position of the first device with respect to thesecond device is determined based on the direction of the movement andthe calculated first and second distances. The relative position may bedetermined by the first device, second device, or some other device. Insome embodiments, the relative position may be determined by analyzing adifference in the distance between the first and second devices afterthe movement of the first device and the direction of the movement ofthe first device.

In some embodiments, the accuracy of the determined relative positionmay depend on the granularity and accuracy of the information used todetermine the relative position, namely the direction of the movementand the calculated first and second distances. For example, if thedirection of the movement may only be determined in four generaldirections within a plane, then the relative position may be determinedbased on the four general directions within the plane.

In some embodiments, the method may be performed by the first device,the second device, some other device, or some combination thereof. Insome embodiments, the first and/or second device may be mobile devices,such as, tablets, smart phones, laptops, gaming consoles, portable mediaplayers, personal navigation devices, personal digital assistants, orother mobile devices. In some embodiments, each of the first and seconddevices may include a single wireless antenna.

In some embodiments, the method may further include additional actions.For example, if the first device determined the relative position of thefirst and second devices, the method may include sending the relativeposition of the first and second devices to the second device.Alternately or additionally, the method may include passing informationbetween the first and second devices based on user input related to therelative position of the first and second devices.

In another example method, a second device may receive a first wirelessnetwork signal from a first device. In some embodiments, the firstdevice may send a wireless network signal, such as a beacon signal, on achannel within a wireless communication network. The wireless networksignal may include data therein, including the signal strength of thewireless network signal when transmitted by the first device. The seconddevice may be connected to the channel within the wireless communicationnetwork and may receive the wireless network signal and obtain the datawithin the wireless network signal. The second device may also calculatethe signal strength of the first wireless network signal when receivedat the second device.

In addition a direction of a movement of the second device may bedetermined using at least one sensor within the second device. Forexample, in some embodiments, the sensor within the second device may bean accelerometer. The second device may receive acceleration data fromthe accelerometer and determine therefrom the direction of the movementof the second device.

The second device may then receive a second wireless network signal fromthe first device after the movement of the second device. The seconddevice may obtain the data within the second wireless network signal.The second device may also calculate the signal strength of the secondwireless network signal when received at the second device.

The relative position of the first device with respect to the seconddevice may then be determined based on the direction of the movement ofthe second device, the first wireless network signal, and the secondwireless network signal In some embodiments, a first distance betweenthe first and second devices may be calculated using data within thefirst wireless network signal and a second distance between the firstand second device may be calculated using data within the secondwireless network signal. For example, in some embodiments, the firstdistance may be calculated using the difference between the transmissionsignal strength of the first wireless signal at the first device and thereception signal strength of the first wireless signal at the seconddevice. Similarly, in some embodiments, the second distance may becalculated using the difference between the transmission signal strengthof the second wireless signal at the first device and the receptionsignal strength of the second wireless signal at the second device.

Based on the calculated first and second distances and the direction ofthe movement of the second device, the relative position of the firstdevice with respect to the second device may be determined. In someembodiments, the relative position may be determined by analyzing adifference in the distance between the first and second devices afterthe movement of the first device and the direction of the movement ofthe first device.

In some embodiments, the calculations performed in the method may beperformed by the first device, the second device, some other device, orsome combination thereof. In some embodiments, the first and/or seconddevice may be mobile devices, such as, tablets, smart phones, laptops,gaming consoles, portable media players, personal navigation devices,personal digital assistants, or other mobile devices. In someembodiments, each of the first and second devices may include a singlewireless antenna.

What is claimed is:
 1. At least one non-transitory machine accessiblemedium comprising computer instructions for dynamically presentingapplications on a data processing system, wherein the computerinstructions, in response to being executed on the data processingsystem, enable the data processing system to carry out a methodcomprising: in response to a user transitioning from a first applicationon a data processing system to a second application, automaticallysaving application usage pattern data, wherein the application usagepattern data comprises context attributes that identify: the applicationfrom which the user transitioned as an active application, theapplication to which the user transitioned as a next application,current time, and at least one additional item from a group consistingof: current location, and type of activity being engaged in by a user;automatically calculating probabilities of activation for applicationsin the data processing system, based at least in part on the contextattributes in the application usage pattern data, including the contextattributes identifying active applications and corresponding nextapplications; automatically saving the calculated probabilities ofactivation; determining current context attributes, including whichapplication is currently active; automatically ranking at least some ofthe applications into a rank order of predicted activation, based atleast in part on (a) the calculated probabilities of activation and (b)the current context attributes, including which application is currentlyactive; providing a next-application button that enables the user torequest a list of potential next applications to be presenting accordingto the rank order of predicted activation; in response to user selectionof the next-application button, automatically presenting one or more ofthe ranked applications for potential activation by the user, whereinthe presented applications are presented according to the rank order ofpredicted activation in a user interface that enables the user to selectone of the ranked applications for activation; in response to userselection of one of the ranked applications, activating the selectedapplication; automatically adjusting a vocabulary of available voicecommands, based at least in part on a current context, wherein theoperation of automatically adjusting a vocabulary of available voicecommands comprises constraining the vocabulary of available voicecommands, based on vocabularies for multiple applications, including (a)a vocabulary for the currently active application and (b) a vocabularyfor at least one inactive application among the top ranked applications,based at least in part on the rank order of predicted activation;receiving voice command input from the user; and in response to thevoice command input from the user, automatically using the adjustedvocabulary of available voice commands when interpreting the voicecommand input.
 2. At least one non-transitory machine accessible mediumaccording to claim 1, wherein: the applications comprise the currentlyactive application and multiple inactive applications; the currentcontext attributes identify the currently active application and atleast one item from a group consisting of current time, currentlocation, and type of activity being engaged in by the user; and theoperation of automatically presenting one or more of the rankedapplications for potential activation by the user comprisesautomatically presenting one or more of the inactive applications,according to the rank order of predicted activation, without presentingthe currently active application for potential activation.
 3. At leastone non-transitory machine accessible medium according to claim 1,wherein the method further comprises: building a context applicationlist that includes at least some of the applications, wherein the dataprocessing system uses current context attributes and the contextattributes in the application usage pattern data to determine whether ornot to include one or more of the applications in the contextapplication list; and wherein the operation of automatically presentingone or more of the ranked applications for potential activation by theuser comprises presenting one or more applications from the contextapplication list for potential activation by the user.
 4. At least onenon-transitory machine accessible medium according to claim 1, whereinthe method further comprises: saving user preference data thatidentifies one of the applications as a preferred application in acontext having at least one particular context attribute; andautomatically utilizing the user preference data to influence the rankorder of predicted activation.
 5. At least one non-transitory machineaccessible medium according to claim 1, wherein the method comprisesautomatically adapting to changing user preferences, with regard towhich applications are preferred by the user in different contexts. 6.At least one non-transitory machine accessible medium according to claim5, wherein the application usage pattern data identifies differentapplications as being preferred applications in different contextshaving different context attributes.
 7. At least one non-transitorymachine accessible medium according to claim 1, further comprising:detecting that the user has performed a predetermined gesture with thedata processing system; and wherein the operation of automaticallypresenting one or more of the ranked applications according to the rankorder of predicted activation is performed in response to detecting thatthe user has performed the predetermined gesture with the dataprocessing system.
 8. At least one non-transitory machine accessiblemedium according to claim 1, wherein: the context attributes whichidentify the current location indicate whether the user was at work, athome, or at another location when the user activated the nextapplication; and the context attributes comprise a user-activityattribute that identifies the type of activity that was being engaged inby the user when the user activated the next application; and the typeof activity identified by the user-activity attribute includes detailscomprising: whether the user was traveling when the user activated saidnext application; if the user was traveling, whether the user wascommuting between home and work; and if the user was traveling, the typeof vehicle that was used.
 9. A data processing system that supportsdynamic presentation of applications, the data processing systemcomprising: a processing element; a non-transitory machine accessiblemedium responsive to the processing element; multiple applications inthe machine accessible medium; and instructions in the machineaccessible medium which, when executed by the processing element, enablethe data processing system to perform a method comprising: in responseto a user transitioning from a first application on a data processingsystem to a second application, automatically saving application usagepattern data, wherein the application usage pattern data comprisescontext attributes that identify: the application from which the usertransitioned as an active application, current time, and at least oneitem from a group consisting of: current location, and type of activitybeing engaged in by a user; automatically calculating probabilities ofactivation for applications in the data processing system, based atleast in part on the context attributes in the application usage patterndata, including the context attributes identifying active applicationsand corresponding next applications; automatically saving the calculatedprobabilities of activation; determining current context attributes,including which application is currently active; automatically rankingat least some of the applications into a rank order of predictedactivation, based at least in part on (a) the calculated probabilitiesof activation and (b) the current context attributes, including whichapplication is currently active; providing a next-application buttonthat enables the user to request a list of potential next applicationsto be presenting according to the rank order of predicted activation; inresponse to user selection of the next-application button, automaticallypresenting one or more of the ranked applications for potentialactivation by the user, wherein the presented applications are presentedaccording to the rank order of predicted activation in a user interfacethat enables the user to select one of the ranked applications foractivation; in response to user selection of one of the rankedapplications, activating the selected application; automaticallyadjusting a vocabulary of available voice commands, based at least inpart on a current context, wherein the operation of automaticallyadjusting a vocabulary of available voice commands comprisesconstraining the vocabulary of available voice commands, based onvocabularies for multiple applications, including (a) a vocabulary forthe currently active application and (b) a vocabulary for at least oneinactive application among the top ranked applications, based at leastin part on the rank order of predicted activation; receiving voicecommand input from the user; and in response to the voice command inputfrom the user, automatically using the adjusted vocabulary of availablevoice commands when interpreting the voice command input.
 10. A dataprocessing system according to claim 9, wherein: the applicationscomprise a currently active application and multiple inactiveapplications; the current context attributes identify the currentlyactive application and at least one item from a group consisting ofcurrent time, current location, and type of activity being engaged in bythe user; and the operation of automatically presenting one or more ofthe ranked applications for potential activation by the user comprisesautomatically presenting one or more of the inactive applications,according to the rank order of predicted activation, without presentingthe currently active application for potential activation.
 11. A dataprocessing system according to claim 9, wherein the method furthercomprises: building a context application list that includes at leastsome of the applications, wherein the data processing system usescurrent context attributes and the context attributes in the applicationusage pattern data to determine whether or not to include one or more ofthe applications in the context application list; and wherein theoperation of automatically presenting one or more of the rankedapplications for potential activation by the user comprises presentingone or more applications from the context application list for potentialactivation by the user.
 12. A data processing system according to claim9, wherein the method further comprises: saving user preference datathat identifies one of the applications as a preferred application in acontext having at least one particular context attribute; andautomatically utilizing the user preference data to influence the rankorder of predicted activation.
 13. A data processing system according toclaim 9, wherein the method further comprises: automatically adapting tochanging user preferences, with regard to which applications arepreferred by the user in different contexts.
 14. A data processingsystem according to claim 9, further comprising: detecting that the userhas performed a predetermined gesture with the data processing system;and wherein the operation of automatically presenting one or more of theranked applications according to the rank order of predicted activationis performed in response to detecting that the user has performed thepredetermined gesture with the data processing system.
 15. A dataprocessing system according to claim 9, wherein: the context attributeswhich identify the current location indicate whether the user was atwork, at home, or at another location when the user activated the nextapplication; and the context attributes comprise a user-activityattribute that identifies the type of activity that was being engaged inby the user when the user activated the next application; and the typeof activity identified by the user-activity attribute includes detailscomprising: whether the user was traveling when the user activated saidnext application; if the user was traveling, whether the user wascommuting between home and work; and if the user was traveling, the typeof vehicle that was used.
 16. A method for dynamically presentingapplications on a data processing system, the method comprising: inresponse to a user transitioning from a first application on a dataprocessing system to a second application, automatically savingapplication usage pattern data, wherein the application usage patterndata comprises context attributes that identify: the application fromwhich the user transitioned as an active application, the application towhich the user transitioned as a next application, current time, and atleast one additional item from a group consisting of: current location,and type of activity being engaged in by a user; automaticallycalculating probabilities of activation for applications in the dataprocessing system, based at least in part on the context attributes inthe application usage pattern data, including the context attributesidentifying active applications and corresponding next applications;automatically saving the calculated probabilities of activation;determining current context attributes, including which application iscurrently active; automatically ranking at least some of theapplications into a rank order of predicted activation, based at leastin part on (a) the calculated probabilities of activation and (b) thecurrent context attributes, including which application is currentlyactive; providing a next-application button that enables the user torequest a list of potential next applications to be presenting accordingto the rank order of predicted activation; in response to user selectionof the next-application button, automatically presenting one or more ofthe ranked applications for potential activation by the user, whereinthe presented applications are presented according to the rank order ofpredicted activation in a user interface that enables the user to selectone of the ranked applications for activation; in response to userselection of one of the ranked applications, activating the selectedapplication; automatically adjusting a vocabulary of available voicecommands, based at least in part on a current context, wherein theoperation of automatically adjusting a vocabulary of available voicecommands comprises constraining the vocabulary of available voicecommands, based on vocabularies for multiple applications, including (a)a vocabulary for the currently active application and (b) a vocabularyfor at least one inactive application among the one or more top rankedapplications, based at least in part on the rank order of predictedactivation; receiving voice command input from the user; and in responseto the voice command input from the user, automatically using theadjusted vocabulary of available voice commands when interpreting thevoice command input.
 17. A method according to claim 16, wherein: theapplications comprise the currently active application and multipleinactive applications; the current context attributes identify thecurrently active application and at least one item from a groupconsisting of current time, current location, and type of activity beingengaged in by the user; and the operation of automatically presentingone or more of the ranked applications for potential activation by theuser comprises automatically presenting one or more of the inactiveapplications, according to the rank order of predicted activation,without presenting the currently active application for potentialactivation.
 18. A method according to claim 16, further comprising:building a context application list that includes at least some of theapplications, wherein the data processing system uses current contextattributes and the context attributes in the application usage patterndata to determine whether or not to include one or more of theapplications in the context application list; and wherein the operationof automatically presenting one or more of the ranked applications forpotential activation by the user comprises presenting one or moreapplications from the context application list for potential activationby the user.
 19. A method according to claim 16, further comprising:saving user preference data that identifies one of the applications as apreferred application in a context having at least one particularcontext attribute; and automatically utilizing the user preference datato influence the rank order of predicted activation.
 20. A methodaccording to claim 16, further comprising: automatically adapting tochanging user preferences, with regard to which applications arepreferred by the user in different contexts.
 21. A method according toclaim 16, further comprising: detecting that the user has performed apredetermined gesture with the data processing system; and wherein theoperation of automatically presenting one or more of the rankedapplications according to the rank order of predicted activation isperformed in response to detecting that the user has performed thepredetermined gesture with the data processing system.
 22. A methodaccording to claim 16, wherein: the context attributes which identifythe current location indicate whether the user was at work, at home, orat another location when the user activated the next application; andthe context attributes comprise a user-activity attribute thatidentifies the type of activity that was being engaged in by the userwhen the user activated the next application; and the type of activityidentified by the user-activity attribute includes details comprising:whether the user was traveling when the user activated said nextapplication; if the user was traveling, whether the user was commutingbetween home and work; and if the user was traveling, the type ofvehicle that was used.